Menu
Coddy logo textTech

אתגר: מיון ציונים

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 63 מתוך 65.

challenge icon

אתגר

קל

צרו מערכת מקיפה לניהול ציוני תלמידים, שמעבדת נתוני תלמידים ממפה, מסננת תלמידים שעברו וממיינת אותם בסדר אלפביתי. האתגר הזה משלב מעבר על מפה, סינון מותנה, פעולות על רשימות ומיון.

הקלט הבא מסופק לכם:

  • מחרוזת JSON המייצגת מפה של שמות תלמידים (מפתחות) ושל ציוני המבחנים שלהם (ערכים)

מחרוזת ה-JSON תיראה כך: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

עליכם לבצע את הפעולות הבאות:

  1. לנתח את מחרוזת ה-JSON ולהפוך אותה ל-Map באמצעות שיטות Dart מתאימות
  2. ליצור רשימה ריקה בשם passingStudents כדי לאחסן את שמות התלמידים שעברו
  3. לעבור על המפה ולהוסיף לרשימת passingStudents את שמות התלמידים שקיבלו ציון 60 ומעלה
  4. למיין את רשימת passingStudents בסדר אלפביתי באמצעות השיטה sort()
  5. להדפיס את המספר הכולל של התלמידים שנבחנו בפורמט המדויק: Total students: X
  6. להדפיס את מספר התלמידים שעברו בפורמט המדויק: Students who passed: X
  7. להדפיס את מספר התלמידים שנכשלו בפורמט המדויק: Students who failed: X
  8. להדפיס את התלמידים שעברו בסדר אלפביתי, כל אחד בשורה חדשה, בפורמט המדויק: Passing student: [name]
  9. אם אף תלמיד לא עבר, להדפיס: 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. עברו על ה-Map וסננו תלמידים שקיבלו ציון 60 ומעלה
  // 2. הוסיפו את שמות התלמידים שעברו לרשימה passingStudents
  // 3. מיינו את הרשימה passingStudents לפי סדר אלפביתי
  // 4. חשבו והדפיסו את הנתונים הסטטיסטיים הנדרשים
  // 5. הדפיסו את התלמידים שעברו בפורמט שצוין
  
  // הדפיסו את התוצאות (החליפו במימוש שלכם)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // הדפיסו את התלמידים שעברו או את ההודעה "No students passed the exam"
}

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Dart אונליין