لغز كود ++C الخاطئ: اكتشف الخطأ مع أحمد

x32x01
  • بواسطة x32x01 ||

قصة المبرمج أحمد وكود الـ ++C الغامض 💻😅

الساعة 2 صباحًا... وأحمد شغال على مشروع تخرجه لإدارة درجات الطلبة.
كل شيء تمام لحد ما بدأ البرنامج يطلع نتائج غريبة جدًا 😨 - متوسطات غلط ودرجات مستحيلة زي -1 و999!

الكود (فيه أخطاء 👇)​

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;
}
 
  • أعجبنى
التفاعلات: lbebulk
  • بواسطة x32x01 ||
نفس المشكلة بيدخل اللوب while (grade != -1) بيدى نفس القيمة عشوائية
والشرط داخل اللوب الداخلى مكتوب غلط
Code:
while ((grade < 0) (grade > 100)){
            cin >> grade;
        }
 
  • بواسطة x32x01 ||

الأخطاء الموجودة في الكود 🚨

  1. المتغير grade غير مهيّأ قبل الاستخدام
    → الشرط while (grade != -1) بيتفحص قيمة غير معروفة!
  2. يتم جمع قيمة -1 في المجموع
    → لازم نستبعدها قبل إضافة الدرجة.
  3. القسمة بين عددين صحيحين
    → لازم نحول إلى 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 ||
أنتهت المسابقة يا شباب :)
 
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
547
x32x01
x32x01
x32x01
الردود
0
المشاهدات
897
x32x01
x32x01
x32x01
الردود
0
المشاهدات
645
x32x01
x32x01
x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
650
x32x01
x32x01
x32x01
الردود
0
المشاهدات
878
x32x01
x32x01
x32x01
الردود
0
المشاهدات
619
x32x01
x32x01
x32x01
الردود
0
المشاهدات
778
x32x01
x32x01
x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,829
المشاركات
2,027
أعضاء أكتب كود
468
أخر عضو
عبدالله احمد
عودة
أعلى