Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تحدي: فرز الدرجات

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 63 من 65.

challenge icon

التحدي

سهل

قم بإنشاء نظام شامل لإدارة درجات الطلاب يقوم بمعالجة بيانات الطلاب من خريطة (map)، وتصفية الطلاب الناجحين، وتنظيمهم أبجدياً. يجمع هذا التحدي بين تكرار الخريطة (map iteration)، والتصفية الشرطية، وعمليات القوائم، والفرز.

يتم تزويدك بالمدخلات التالية:

  • سلسلة JSON تمثل خريطة لأسماء الطلاب (مفاتيح) ودرجات اختباراتهم (قيم)

ستبدو سلسلة JSON بهذا الشكل: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

مهمتك هي:

  1. تحليل سلسلة JSON إلى Map باستخدام طرق Dart المناسبة
  2. إنشاء قائمة فارغة تسمى passingStudents لتخزين أسماء الطلاب الذين نجحوا
  3. التكرار عبر الخريطة وإضافة أسماء الطلاب الذين حصلوا على 60 درجة أو أكثر إلى قائمة passingStudents
  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. قم بالمرور عبر الخريطة وتصفية الطلاب الذين حصلوا على 60 درجة أو أكثر
  // 2. أضف أسماء الطلاب الناجحين إلى قائمة passingStudents
  // 3. قم بفرز قائمة passingStudents أبجدياً
  // 4. قم بحساب وطباعة الإحصائيات المطلوبة
  // 5. قم بطباعة الطلاب الناجحين بالتنسيق المحدد
  
  // إخراج النتائج (استبدلها بتنفيذك الخاص)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // طباعة الطلاب الناجحين أو رسالة "No students passed the exam"
}

جميع دروس Logic & Flow