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

مراجعة: Struct بيانات الطالب

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

challenge icon

التحدي

سهل

قم بإنشاء برنامج بلغة C يوضح سير العمل الكامل لاستخدام الـ struct مع نظام إدارة الطلاب. يجب أن يقوم برنامجك بما يلي:

  1. قم بتعريف struct باسم Student مع الأعضاء التاليين:
    • عدد صحيح id لتخزين رقم تعريف الطالب
    • عدد عشري grade لتخزين درجة الطالب
  2. في الدالة main، قم بإنشاء متغير من نوع Student باسم student1
  3. اقرأ رقم تعريف الطالب ودرجته من المدخلات باستخدام scanf:
    • اقرأ عدداً صحيحاً لـ ID وقم بتخزينه في student1.id
    • اقرأ عدداً عشرياً للدرجة وقم بتخزينه في student1.grade
  4. بعد قراءة المدخلات، قم بإجراء التحقق والحسابات التالية:
    • إذا كانت الدرجة أكبر من 100.0، فاجعلها 100.0
    • إذا كانت الدرجة أقل من 0.0، فاجعلها 0.0
    • احسب درجة إضافية بإضافة 5.0 إلى الدرجة الحالية (بعد التحقق)
    • إذا تجاوزت الدرجة الإضافية 100.0، فاجعل الدرجة الإضافية 100.0
  5. اطبع معلومات الطالب بهذا التنسيق تماماً:
    • Student Information:
    • ID: [id]
    • Original Grade: [grade]
    • Bonus Grade: [bonus_grade]
    • Grade Status: [status]
  6. يجب تحديد حالة الدرجة (grade status) على النحو التالي:
    • إذا كانت الدرجة الأصلية 90.0 أو أعلى: Excellent
    • إذا كانت الدرجة الأصلية من 80.0 إلى 89.9: Good
    • إذا كانت الدرجة الأصلية من 70.0 إلى 79.9: Average
    • إذا كانت الدرجة الأصلية أقل من 70.0: Needs Improvement

يختبر هذا التحدي فهمك لتعريف الـ struct، وإنشاء المتغيرات، والوصول إلى الأعضاء باستخدام عامل النقطة (dot operator)، والتعامل مع المدخلات باستخدام scanf، والمنطق الشرطي للتحقق من البيانات ومعالجتها. ستتدرب على سير العمل الكامل للتعامل مع الـ structs في سيناريو عملي.

جرّب بنفسك

#include <stdio.h>

// TODO: قم بتعريف هيكل الطالب (Student struct) هنا

int main() {
    // TODO: قم بإنشاء متغير من نوع Student باسم student1
    
    // قراءة المدخلات
    int id;
    float grade;
    scanf("%d", &id);
    scanf("%f", &grade);
    
    // TODO: قم بتخزين قيم المدخلات في أعضاء الهيكل (struct members)
    
    // TODO: قم بتنفيذ التحقق من الدرجة وحساب المكافأة (bonus)
    
    // TODO: قم بتحديد حالة الدرجة
    
    // طباعة النتائج
    printf("Student Information:\n");
    printf("ID: %d\n", /* TODO: اطبع معرف الطالب */);
    printf("Original Grade: %.1f\n", /* TODO: اطبع الدرجة الأصلية */);
    printf("Bonus Grade: %.1f\n", /* TODO: اطبع درجة المكافأة */);
    printf("Grade Status: %s\n", /* TODO: اطبع حالة الدرجة */);
    
    return 0;
}

جميع دروس Logic & Flow