السلام عليكم
طلب منا أن نتكت كود بلغة سي بلس بلس كمبتدئين للبرنامج التالي :
نص السؤال
اكتب برنامجاً بلغة ال c++ يقوم بإدخال علامتي الفحص النظري و العملي لمقرر البرمجة 1 لطلاب السنة الثانية ثم يحسب مايلي :
عدد الطلاب الناجحين و عدد الطلاب الراسبين ثم يطبع النتائج على الشاشة ؟
قمت بحل هذا السئال كالتالي :
#include <iostream.h>
#include<math.h>
void main ()
{
int m ,i=1,c ,failed=0 , passed=0 ;
cout << "enter the number of student in computer engeeniring 2ed year who did the exams " << endl ;
cin >> m ;
int a , b ;
while(i<=m)
{
cout<<" enter the markes of practial and normal exam " << endl ;
cin >> a >>b ;
c=a+b;
if (c<60)
{
cout << " faild " << endl ;
failed = failed + i ;
}
else
{
cout << "passed " << endl ;
passed = passed + i ;
}
i++ ;
}
cout << passed << "is passed "<<endl ;
cout << failed << " is failed "<<endl ;
}وظهر عدد الراسبين 2 من أجل طالبين أحدهما ناجح (كما هو في الصورة المرفقة ).
فهل غلطي هو استخدام البنية if ضمن البنية while
if (c<60)
{
cout << " faild " << endl ;
failed = failed + i ;
}
else
{
cout << "passed " << endl ;
passed = passed + i ;أليس من المفروض أن يتحقق من الشرط و هو
c<60
و بالتالي إذا لم يتحقق سوف ينتقل إلى else .
يعني هل i في
failed = failed + i
تأخذ قيمة عندما لا يتحقق شرط If
جزاكم الله خيراً .. و عذراً على الإطالة