- بواسطة 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;
} - بواسطة 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;
}