تسجيل الدخول

مشاهدة النسخة كاملة : ما الخطأ في هذا الكود



IGI2000
05-10-2005, 12:26 PM
السلام عليكم ورحمة الله وبركاته
مبارك رمضان وكل عام وانتم بخير
انا كنت جالس ولا اعرف ماذا افعل فقلت اعمل برنامج صغير اشوف الباقي بعقلي
فعمل برنامج يحسب معدل الطالب وهو يضع عدد المواد
المهم اني نفذته ولم يخرج خطا ولكن في النهاية (وقت التنفيذ) يطلع عدد سالب طويل
وهذا هو الكود

#include <iostream>
using namespace std;
int main()
{
int mada;
int sum;
int grade;
cout<<"Enter your items : ";
cin>>mada;
for (int i=1;i<=mada;i++)
{
cout<<"Enter grade number"<<i<<":";
cin>>grade;
sum =sum+grade;
}
cout<<"The result is :"<<sum/ mada<<endl;
return 0 ;
}


ومع العلم ان المترجم لم يظهر اخطاء او تحذيرات

ارجو الرد بسرعة
والسلام عليكم
زيد

Wolf Sniper
05-10-2005, 04:16 PM
السلام عليكم ..

الخطأ في العبارى التالية :

sum = sum + grade;

حيث أنك قمت بإضافة قيمة المتغير grade إلى sum ( في الدورة الأولى في الحلقة for ) و حيث أن هذا المتغير sum لا يحمل قيمة ابتدائية فإن عملية الجمع السابقة خاطئة .. حيث يمكن تمثيل حالة المتغير sum بالقيمة Null ( و معناها لا شيء أو لا توجد قيمة في المتغير ) .. و الخطأ في أن أي عملية رياضية أحد أطرافها تحمل القيمة Null فالناتج هو Null دائماً و بمعنى آخر لن تخزن القيمة الجديدة في المتغير sum .. و سيكون الخطأ هو نفسه في بقية الدورات في الحلقة for .

لحل المشكلة ضع قيمة ابتدائية للمتغير sum .. و بما أنك ستستخدم هذا المتغير لعملية الجمع فيجب أن تضع القيمة الابتدائية تساوي الصفر :

int sum = 0;

ملاحظات :

1 - من أجل المعدل استخدم متغير من النوع float لأن المعدل قد يحتوي على فواصل عشرية .. حيث أن النوع int لا يتعامل إلا مع الأعداد الصحيحة فقط .. أو استخدم العملية القسرية ( float ) عند إخراج ناتج المعدل كالتالي :


cout << (float) sum / mada << endl;

2 – حاول معالجة فيما إذا أدخل المستخدم العدد صفر في المتغير mada .

و شكراً

IGI2000
05-10-2005, 08:20 PM
السلام عليكم

شكرا اخي Wolf Sniper على المرور

الصراحة لقد استفدت اشياء جديدة منك الآن:biggthump

اما الملاحظة الثانية فلم اضعها في الحسبان :(
سأحاول اعادة كتابة الكود لاختبار المتغير mada في حال إذا كانت قيمته (0) او قيمة سالبة

وشكرا مرة ثانية

اخوك زيد

The Coder
09-10-2005, 07:27 AM
يظهر اني تأخرت ^_^
.....