Wyzwanie: Sortowanie ocen
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 63 z 65.
Wyzwanie
ŁatwyStwó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:
- Przeanalizować łańcuch JSON i przekształcić go w Map za pomocą odpowiednich metod Dart
- Utworzyć pustą listę o nazwie
passingStudents, aby przechowywać imiona uczniów, którzy zdali - Przejść przez mapę i dodać do listy
passingStudentsimiona uczniów, którzy uzyskali co najmniej 60 punktów - Posortować listę
passingStudentsalfabetycznie za pomocą metodysort() - Wyświetlić łączną liczbę uczniów, którzy przystąpili do egzaminu, w dokładnym formacie:
Total students: X - Wyświetlić liczbę uczniów, którzy zdali, w dokładnym formacie:
Students who passed: X - Wyświetlić liczbę uczniów, którzy nie zdali, w dokładnym formacie:
Students who failed: X - Wyświetlić uczniów, którzy zdali, w kolejności alfabetycznej, każdego w osobnym wierszu, w dokładnym formacie:
Passing student: [name] - 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
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online