Sfida: Ordinatore di voti
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 63 di 65.
Sfida
FacileCrea un sistema completo di gestione dei voti degli studenti che elabori i dati degli studenti da una mappa, filtri gli studenti promossi e li ordini alfabeticamente. Questa sfida combina l’iterazione su una mappa, il filtraggio condizionale, le operazioni sulle liste e l’ordinamento.
Ti viene fornito il seguente input:
- Una stringa JSON che rappresenta una mappa di nomi degli studenti (chiavi) e dei loro punteggi nei test (valori)
La stringa JSON sarà simile a questa: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}
Il tuo compito è:
- Analizzare la stringa JSON e convertirla in una Map usando i metodi Dart appropriati
- Creare una lista vuota chiamata
passingStudentsper memorizzare i nomi degli studenti promossi - Iterare sulla mappa e aggiungere alla lista
passingStudentsi nomi degli studenti che hanno ottenuto un punteggio pari o superiore a 60 - Ordinare alfabeticamente la lista
passingStudentsusando il metodosort() - Stampare il numero totale di studenti che hanno sostenuto l’esame nel formato esatto:
Total students: X - Stampare il numero di studenti promossi nel formato esatto:
Students who passed: X - Stampare il numero di studenti non promossi nel formato esatto:
Students who failed: X - Stampare gli studenti promossi in ordine alfabetico, ciascuno su una nuova riga, nel formato esatto:
Passing student: [name] - Se nessuno studente è stato promosso, stampare:
No students passed the exam
Il tuo programma dovrebbe dimostrare una corretta iterazione sulla mappa, la logica condizionale per filtrare i dati in base alla soglia di promozione di 60, la manipolazione delle liste e le operazioni di ordinamento. L’output deve corrispondere esattamente al formato specificato sopra, con gli studenti promossi elencati in ordine alfabetico.
Provalo tu
import 'dart:io';
import 'dart:convert';
void main() {
// Leggi la stringa JSON in input
String? jsonString = stdin.readLineSync();
// Converti la stringa JSON in una Map
Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
// Crea una lista vuota per memorizzare gli studenti promossi
List<String> passingStudents = [];
// TODO: Scrivi il tuo codice qui sotto
// 1. Scorri la mappa e seleziona gli studenti che hanno ottenuto 60 o più
// 2. Aggiungi i nomi degli studenti promossi alla lista passingStudents
// 3. Ordina alfabeticamente la lista passingStudents
// 4. Calcola e stampa le statistiche richieste
// 5. Stampa gli studenti promossi nel formato specificato
// Mostra i risultati (sostituisci con la tua implementazione)
print("Total students: ");
print("Students who passed: ");
print("Students who failed: ");
// Stampa gli studenti promossi o il messaggio "No students passed the exam"
}Tutte le lezioni di Logica e flusso
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online