في الدرس الثالث من سلسلة تعلم لغة C، تحدثنا عن العمليات الحسابية في اللغة C وكيفية استخدام المشغلات الحسابية للعمل على المتغيرات، وفي هذا الدرس، سنتحدث عن المصفوفات في لغة البرمجة C.
المحتوى:
المصفوفات هي مجموعات من المتغيرات التي يتم تخزينها بشكل متتالي في الذاكرة، وكل عنصر في المصفوفة له عنوان فريد في الذاكرة.
يمكن تعريف المصفوفات باستخدام الأمر التالي:
<نوع العنصر> <اسم المصفوفة>[<حجم المصفوفة>];
على سبيل المثال، إذا كنت تريد تخزين مجموعة من الأعداد الصحيحة في مصفوفة، يمكنك استخدام الأمر التالي:
int numbers[5];
هذا سيقوم بتعريف مصفوفة تسمى "numbers" تحتوي على 5 عناصراف صحيحة.
يمكن الوصول إلى عناصر المصفوفة باستخدام عنوان العنصر في المصفوفة. على سبيل المثال، إذا كنت تريد الوصول إلى العنصر الثالث في المصفوفة "numbers" الذي يحتوي على الأرقام الصحيحة، يمكنك استخدام الأمر التالي:
numbers[2] = 7;
في هذا المثال، يتم تعيين القيمة 7 إلى العنصر الثالث في المصفوفة "numbers".
يمكن تعريف مصفوفات متعددة الأبعاد في لغة C. على سبيل المثال، يمكن تعريف مصفوفة ثنائية الأبعاد لتخزين بيانات الطلاب في الفصل الدراسي الحالي، باستخدام الأمر التالي:
<نوع العنصر> <اسم المصفوفة>[<حجم الصفوف>][<حجم الأعمدة>];
على سبيل المثال، يمكن تعريف مصفوفة ثنائية الأبعاد "students" تحتوي على 3 صفوف و 4 أعمدة لتخزين بيانات الطلاب كما يلي:
int students[3][4];
يمكن الوصول إلى العناصر في المصفوفة الثنائية الأبعاد باستخدام مؤشرين، أحدهما للصفوف والآخر للأعمدة. على سبيل المثال، إذا كنت تريد تعيين العلامة الكاملة للطالب الأول في الصف الأول في المصفوفة "students"،يمكن استخدام الأمر التالي:
students[0][2] = 90;
في هذا المثال، يتم تعيين القيمة 90 إلى العنصر الموجود في الصف الأول والعمود الثالث من المصفوفة "students".
لنفترض أن لدينا برنامجاً يحتوي على قائمة بأسماء الطلاب وعلاماتهم في 3 مواد مختلفة، ونريد حساب المتوسط الحسابي لكل طالب. يمكن استخدام مصفوفة ثنائية الأبعاد لتخزين بيانات الطلاب كما يلي:
#include
int main() {
int i, j, num_students = 3, num_subjects = 3;
float grades[num_students][num_subjects], average[num_students];
char names[num_students][20];
// get student names and grades for each subject
for(i = 0; i printf("Enter name of student %d: ", i+1);
scanf("%s", names[i]);
for(j = 0; j < num_subjects; j++) {
printf("Enter grade for subject %d for student %d: ", j+1, i+1);
scanf("%f", &grades[i][j]);
}
}
// calculate average for each student
for(i = 0; i < num_students; i++) {
float sum = 0;
for(j = 0; j < num_subjects; j++) {
sum += grades[i][j];
}
average[i] = sum / num_subjects;
}
// print student names and their averages
printf("\nStudent Grades:\n");
for(i = 0; i < num_students; i++) {
printf("%s: %.2f\n", names[i], average[i]);
}
return 0;
}
في هذا البرنامج، يتم استخدام مصفوفة ثنائية الأبعاد "grades" لتخزين علامات الطلاب، ومصفوفة أحادية الأبعاد "average" لتخزين المتوسطات الحسابية لكل طالب. يتم أيضًا استخدام مصفوفة ثنائية الأبعاد "names" لتخزين أسماء الطلاب. يتم استخدام حلقتين متداخلتين للحصول على بيانات الطلاب وحساب المتوسطات الحسابية، ثم يتم طباعة أسماء الطلاب ومتوسطاتهم باستخدام حلقة for.
نأمل أن يكون هذا الدرس مفيدًا لك في فهم المصفوفات في لغة البرمجة C.