Menu
Coddy logo textTech

Sfida: Ordinatore di voti

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 63 di 65.

challenge icon

Sfida

Facile

Crea 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 è:

  1. Analizzare la stringa JSON e convertirla in una Map usando i metodi Dart appropriati
  2. Creare una lista vuota chiamata passingStudents per memorizzare i nomi degli studenti promossi
  3. Iterare sulla mappa e aggiungere alla lista passingStudents i nomi degli studenti che hanno ottenuto un punteggio pari o superiore a 60
  4. Ordinare alfabeticamente la lista passingStudents usando il metodo sort()
  5. Stampare il numero totale di studenti che hanno sostenuto l’esame nel formato esatto: Total students: X
  6. Stampare il numero di studenti promossi nel formato esatto: Students who passed: X
  7. Stampare il numero di studenti non promossi nel formato esatto: Students who failed: X
  8. Stampare gli studenti promossi in ordine alfabetico, ciascuno su una nuova riga, nel formato esatto: Passing student: [name]
  9. 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

Esercitati da solo: Compilatore Dart online