チャレンジ:成績ソーター
CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 63/65。
チャレンジ
簡単マップから生徒データを処理し、合格した生徒をフィルタリングして、アルファベット順に整理する包括的な生徒成績管理システムを作成してください。このチャレンジでは、マップの反復処理、条件付きフィルタリング、リスト操作、およびソートを組み合わせます。
以下の入力が提供されます:
- 生徒の名前(キー)とテストのスコア(値)のマップを表すJSON文字列
JSON文字列は次のようになります: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}
あなたのタスクは以下の通りです:
- 適切なDartのメソッドを使用して、JSON文字列をMapにパースする
- 合格した生徒の名前を格納するための
passingStudentsという空のリストを作成する - マップを反復処理し、スコアが60以上の生徒の名前を
passingStudentsリストに追加する sort()メソッドを使用して、passingStudentsリストをアルファベット順にソートする- 試験を受けた生徒の総数を、次の正確な形式で出力する:
Total students: X - 合格した生徒の数を、次の正確な形式で出力する:
Students who passed: X - 不合格だった生徒の数を、次の正確な形式で出力する:
Students who failed: X - 合格した生徒をアルファベット順に、それぞれ新しい行に次の正確な形式で出力する:
Passing student: [name] - 合格者がいない場合は、次のように出力する:
No students passed the exam
プログラムでは、適切なマップの反復処理、合格基準60に基づくデータフィルタリングのための条件付きロジック、リスト操作、およびソート操作を示す必要があります。出力は、合格した生徒がアルファベット順にリストされるなど、上記の指定された形式と正確に一致する必要があります。
自分で試してみよう
import 'dart:io';
import 'dart:convert';
void main() {
// JSON文字列の入力を読み込む
String? jsonString = stdin.readLineSync();
// JSON文字列をMapにパースする
Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
// 合格した学生を格納するための空のリストを作成する
List<String> passingStudents = [];
// TODO: 以下にコードを記述してください
// 1. マップを反復処理し、60点以上の学生をフィルタリングする
// 2. 合格した学生の名前をpassingStudentsリストに追加する
// 3. passingStudentsリストをアルファベット順にソートする
// 4. 必要な統計を計算して出力する
// 5. 指定された形式で合格した学生を出力する
// 結果を出力する(自身の実装に置き換えてください)
print("Total students: ");
print("Students who passed: ");
print("Students who failed: ");
// 合格した学生、または「No students passed the exam」というメッセージを出力する
}論理とフローのすべてのレッスン
1リスト操作の応用
リストのプロパティ: first と lastリストの状態: isEmpty と isNotEmptyリストの反転リストへの追加: insertリストの削除: removeWhereリスト内の検索: indexOfリストのソートリストのシャッフルまとめ - リストオーガナイザー