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

x32x01
  • بواسطة x32x01 ||
  • #1

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

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

  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 ||
  • #5
أنتهت المسابقة يا شباب :)
 

المواضيع ذات الصلة

x32x01
الردود
0
المشاهدات
252
x32x01
x32x01
x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
882
x32x01
x32x01
x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
550
x32x01
x32x01
الوسوم : الوسوم
c++ debugging input output logic errors loops أخطاء برمجية تحليل الكود تهيئة المتغيرات حساب المتوسط شروط التوقف
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟

آخر المشاركات

إحصائيات المنتدى
المواضيع
2,388
المشاركات
2,601
أعضاء أكتب كود
574
أخر عضو
الياس
عودة
أعلى