Sher. نشر 11 ديسمبر 2020 أرسل تقرير نشر 11 ديسمبر 2020 (معدل) Hello,i'm learning c and i have a problem with my cod. .i want to calculate the average for every exam, but it returns randomly numbers could you take a look i'm sorry for english, i dont have arabic keybord. #include<stdio.h> #include<stdlib.h> struct Student MStudent(struct Student std); void CalcAvrg(struct Student std); struct Student{ int mark[5][5]; }; struct Student MStudent(struct Student std){ int i,j; for(i=0;i<5;i++){ for(j=0;j<5;j++){ printf("%d. Student's mark for %d. exam :\n", i+1,j+1); scanf("%d", &std.mark[i][j]); } } return std; } void CalcAvrg(struct Student std){ int i; for(i=0;i<5;i++){ printf("%d. Exam's average is: %d\n", i+1, (std.mark[0][i] +std.mark[1][i] + std.mark[2][i]+ std.mark[3][i]+ std.mark[4][i])/5); } } int main(){ struct Student dene; MStudent(dene); CalcAvrg(dene); return 0; } تم التعديل في 11 ديسمبر 2020 بواسطة Wael Aljamal توضيح السؤال اقتباس
0 Wael Aljamal نشر 11 ديسمبر 2020 أرسل تقرير نشر 11 ديسمبر 2020 مرحبا، أنت تضيف الكلمة المفتاحية struct في كل مكان و هذا خاطئ. نستخدمها فقط عند تعريف سجل جديد ثم نستخدم اسم هذا السجل مكان تعريف المتحولات التي من نوعه. استخدمت التمرير بالعنوان & لا أعرف إذاكنت قد درسته وتعرفه من قبل. عند تعريف المصفوفة mark قمت بإسناد قيمة إبتدائية لها بالقيمة 0 لجميع العناصر. بما أنك تقوم بتعريف ترويسة للتوابع نكتبهم أسفل الدالة main وإلا اكتب جسم التابع كاملا قبل main. في التابع CalcAvrg يمكنك استخدام حلقة مثل التي استخدمتها لإدخال العلامات أفضل من هذا الشكل الذي كتبت به. #include<stdio.h> #include<stdlib.h> struct Student { int mark[5][5] = {{0}}; }; void MStudent( Student& myStruct); void CalcAvrg( Student& myStruct); int main() { struct Student dene; MStudent(dene); CalcAvrg(dene); return 0; } void MStudent( Student& myStruct) { int i,j; for(i=0; i<5; i++) { for(j=0; j<5; j++) { printf("%d. Student's mark for %d. exam :\n", i+1,j+1); scanf("%d", &myStruct.mark[i][j]); } } } void CalcAvrg( Student& myStruct) { int i; for(i=0; i<5; i++) { printf("%d. Exam's average is: %d\n", i+1, (myStruct.mark[0][i] + myStruct.mark[1][i] + myStruct.mark[2][i] + myStruct.mark[3][i] + myStruct.mark[4][i])/5); } } في حال لا تريد التمرير بالعنوان علينا إعادة إسناد القيمة المعادة من كل دالة إلى المتحول في الدالة main. حتى نحتفظ بآخر نسخة من قيم السجل فيها. بالتوفيق 3 اقتباس
السؤال
Sher.
Hello,i'm learning c and i have a problem with my cod.
.i want to calculate the average for every exam, but it returns randomly numbers
could you take a look
i'm sorry for english, i dont have arabic keybord.
توضيح السؤال
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.