مراجعة: Struct بيانات الطالب
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 43 من 63.
التحدي
سهلقم بإنشاء برنامج بلغة C يوضح سير العمل الكامل لاستخدام الـ struct مع نظام إدارة الطلاب. يجب أن يقوم برنامجك بما يلي:
- قم بتعريف
structباسمStudentمع الأعضاء التاليين:- عدد صحيح
idلتخزين رقم تعريف الطالب - عدد عشري
gradeلتخزين درجة الطالب
- عدد صحيح
- في الدالة main، قم بإنشاء متغير من نوع
Studentباسمstudent1 - اقرأ رقم تعريف الطالب ودرجته من المدخلات باستخدام
scanf:- اقرأ عدداً صحيحاً لـ ID وقم بتخزينه في
student1.id - اقرأ عدداً عشرياً للدرجة وقم بتخزينه في
student1.grade
- اقرأ عدداً صحيحاً لـ ID وقم بتخزينه في
- بعد قراءة المدخلات، قم بإجراء التحقق والحسابات التالية:
- إذا كانت الدرجة أكبر من 100.0، فاجعلها 100.0
- إذا كانت الدرجة أقل من 0.0، فاجعلها 0.0
- احسب درجة إضافية بإضافة 5.0 إلى الدرجة الحالية (بعد التحقق)
- إذا تجاوزت الدرجة الإضافية 100.0، فاجعل الدرجة الإضافية 100.0
- اطبع معلومات الطالب بهذا التنسيق تماماً:
Student Information:ID: [id]Original Grade: [grade]Bonus Grade: [bonus_grade]Grade Status: [status]
- يجب تحديد حالة الدرجة (grade status) على النحو التالي:
- إذا كانت الدرجة الأصلية 90.0 أو أعلى:
Excellent - إذا كانت الدرجة الأصلية من 80.0 إلى 89.9:
Good - إذا كانت الدرجة الأصلية من 70.0 إلى 79.9:
Average - إذا كانت الدرجة الأصلية أقل من 70.0:
Needs Improvement
- إذا كانت الدرجة الأصلية 90.0 أو أعلى:
يختبر هذا التحدي فهمك لتعريف الـ 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
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف7الهياكل (structs)
ما هو الـ Struct؟الإعلان عن Structإنشاء متغيرات Structالوصول إلى أعضاء الـ Structتهيئة الـ Structsمراجعة: Struct بيانات الطالب2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية