- بواسطة x32x01 ||
 
قصة المبرمج أحمد وكود الـ ++C الغامض 
الساعة 2 صباحًا... وأحمد شغال على مشروع تخرجه لإدارة درجات الطلبة.كل شيء تمام لحد ما بدأ البرنامج يطلع نتائج غريبة جدًا
الكود (فيه أخطاء 
)
  C++: 
 #include <iostream>
using namespace std;
int main() {
    int grade;
    int sum = 0;
    int count = 0;
    int max = 0;
    int min = 100;
    cout << "Enter grades (enter -1 to stop): ";
    while (grade != -1) {
        cin >> grade;
        sum += grade;
        count++;
        if (grade > max) max = grade;
        if (grade < min) min = grade;
    }
    float average = sum / count;
    cout << "Average: " << average << endl;
    cout << "Max: " << max << endl;
    cout << "Min: " << min << endl;
    return 0;
} اتأكد دايمًا إنك بتراجع كل شرط وكل متغير قبل التشغيل.
شاركنا إجابتك في التعليقات
وأول 3 إجابات صحيحة ليهم عضوية VIP شهر مجاني!
 التعديل الأخير:  
 - بواسطة Chemseddine ||
 
 C++: 
 using namespace std;
int main() {
    float grade;
    float sum = 0;
    int count = 0;
    float max = 0;
    float min = 100;
    cout << "Enter grades (enter -1 to stop): ";
    while (grade != -1) {
        cin >> grade;
        while ((grade < 0) (grade > 100)){
            cin >> grade;
        }
        sum += grade;
        count++;
        if (grade > max) max = grade;
        if (grade < min) min = grade;
    }
    float average = sum / count;
    cout << "Average: " << average << endl;
    cout << "Max: " << max << endl;
    cout << "Min: " << min << endl;
    return 0;
} - بواسطة x32x01 ||
 
الأخطاء الموجودة في الكود 
- المتغير grade غير مهيّأ قبل الاستخدام
→ الشرط while (grade != -1) بيتفحص قيمة غير معروفة! - يتم جمع قيمة -1 في المجموع
→ لازم نستبعدها قبل إضافة الدرجة. - القسمة بين عددين صحيحين
→ لازم نحول إلى float عشان الناتج يكون عشري. 
الكود الصحيح 
  C++: 
 #include <iostream>
using namespace std;
int main() {
    int grade = 0;
    int sum = 0;
    int count = 0;
    int max = 0;
    int min = 100;
    cout << "Enter grades (enter -1 to stop): ";
    while (true) {
        cin >> grade;
        if (grade == -1) break; // خروج عند -1 فقط
        if (grade < 0 || grade > 100) continue; // تجاهل الدرجات غير الصحيحة
        sum += grade;
        count++;
        if (grade > max) max = grade;
        if (grade < min) min = grade;
    }
    if (count > 0) {
        float average = static_cast<float>(sum) / count;
        cout << "Average: " << average << endl;
        cout << "Max: " << max << endl;
        cout << "Min: " << min << endl;
    } else {
        cout << "No valid grades entered." << endl;
    }
    return 0;
} المواضيع ذات الصلة
 الدخول أو التسجيل السريع
 -  كتاب دليلك المُختصر لبيع المُنتجات الرّقمية
- x32x01
 - التحديث:
 
 -  كتاب الدّليل المُختصر لصفحات الهبوط (Landing Pages)
- x32x01
 - التحديث:
 
 -  دورة EJPTv2 من شرح م/أحمد سلطان - Ethical Hacking
- x32x01
 - التحديث:
 
 -  ملخص كورس 200 -301 CCNA للـ م/ عبير حسنى
- x32x01
 - التحديث:
 
 -  كتاب تعلم برمجة Node.JS
- x32x01
 - التحديث:
 
 -  تعلم لغة برمجة ++C من البداية إلى البرمجة الكائنية
- x32x01
 - التحديث:
 
 -  كتاب لشرح ChatGPT خطوة بخطوة
- x32x01
 - التحديث:
 
 -  كتاب تطبيقات الذكاء الأصطناعي في خدمة اللغة العربية
- x32x01
 - التحديث:
 
 -  كتاب أكثر من 100 أداة لزيادة إنتاجية الأعمال
- x32x01
 - التحديث:
 
 -  التحريك عبر CSS
- x32x01
 - التحديث:
 
 
إحصائيات المنتدى
 - المواضيع
 - 1,938
 
- المشاركات
 - 2,138
 
- أعضاء أكتب كود
 - 478
 
- أخر عضو
 - anashanashanash