Menu
Coddy logo textTech

Wyzwanie: Sortowanie ocen

Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 63 z 65.

challenge icon

Wyzwanie

Łatwy

Stwórz kompleksowy system zarządzania ocenami uczniów, który przetwarza dane uczniów z mapy, filtruje uczniów, którzy zdali, i porządkuje ich alfabetycznie. To wyzwanie łączy iterację po mapie, filtrowanie warunkowe, operacje na liście i sortowanie.

Otrzymujesz następujące dane wejściowe:

  • Łańcuch JSON reprezentujący mapę imion uczniów (klucze) i ich wyników testów (wartości)

Łańcuch JSON będzie wyglądać tak: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

Twoim zadaniem jest:

  1. Przeanalizować łańcuch JSON i przekształcić go w Map za pomocą odpowiednich metod Dart
  2. Utworzyć pustą listę o nazwie passingStudents, aby przechowywać imiona uczniów, którzy zdali
  3. Przejść przez mapę i dodać do listy passingStudents imiona uczniów, którzy uzyskali co najmniej 60 punktów
  4. Posortować listę passingStudents alfabetycznie za pomocą metody sort()
  5. Wyświetlić łączną liczbę uczniów, którzy przystąpili do egzaminu, w dokładnym formacie: Total students: X
  6. Wyświetlić liczbę uczniów, którzy zdali, w dokładnym formacie: Students who passed: X
  7. Wyświetlić liczbę uczniów, którzy nie zdali, w dokładnym formacie: Students who failed: X
  8. Wyświetlić uczniów, którzy zdali, w kolejności alfabetycznej, każdego w osobnym wierszu, w dokładnym formacie: Passing student: [name]
  9. Jeśli żaden uczeń nie zdał, wyświetlić: No students passed the exam

Twój program powinien pokazywać prawidłową iterację po mapie, logikę warunkową filtrującą dane na podstawie progu zaliczenia wynoszącego 60, operacje na liście oraz sortowanie. Wynik musi odpowiadać dokładnie podanemu wyżej formatowi, a uczniowie, którzy zdali, muszą być wymienieni w kolejności alfabetycznej.

Spróbuj swoich sił

import 'dart:io';
import 'dart:convert';

void main() {
  // Wczytaj wejściowy ciąg JSON
  String? jsonString = stdin.readLineSync();
  
  // Przekształć ciąg JSON w Map
  Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
  
  // Utwórz pustą listę do przechowywania studentów, którzy zdali
  List<String> passingStudents = [];
  
  // TODO: Napisz swój kod poniżej
  // 1. Przejdź przez mapę i wybierz studentów, którzy uzyskali 60 punktów lub więcej
  // 2. Dodaj imiona i nazwiska studentów, którzy zdali, do listy passingStudents
  // 3. Posortuj listę passingStudents alfabetycznie
  // 4. Oblicz i wypisz wymagane statystyki
  // 5. Wypisz studentów, którzy zdali, w określonym formacie
  
  // Wypisz wyniki (zastąp własną implementacją)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // Wypisz studentów, którzy zdali, lub komunikat "No students passed the exam"
}

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Dart online