البرمجة

برنامج تصنيف الدرجات باستخدام C++

في هذا الكود البرمجي الذي قدمته، يظهر وجود خطأ في صياغة بعض الشروط في البنية التحكمية “if-else”، مما يؤدي إلى ظهور رسائل خطأ تشير إلى “expected primary-expression before ‘<' token."، وهو خطأ شائع يحدث عندما يتعرض المترجم لصعوبة في فهم الشرط المعطى.

السبب في هذه الأخطاء يعود إلى الطريقة التي تم فيها كتابة الشروط في الجمل “else if”، حيث يجب أن يكون هناك قيمة مقارنة بعد كل من العلامات “>=” و”&&”، ولكن في الشروط التي أوردتها، توجد نقص في القيم المراد مقارنتها.

على سبيل المثال، انظر إلى الشرط التالي:

cpp
else if (percentage >= 92 && < 98)

هنا، يجب أن تكون هناك قيمة تتبع علامة “<" بعد الـ "&&" لكنها غير موجودة. لتصحيح هذا الخطأ، يجب توفير قيمة مقارنة بعد "<" لضمان صحة الشرط.

فيما يلي تصحيح لبعض الشروط:

cpp
else if (percentage >= 92 && percentage < 98) { letter = "A"; } else if (percentage >= 90 && percentage < 92) { letter = "A-"; } else if (percentage >= 88 && percentage < 90) { letter = "B+"; }

يتعين عليك تكرار نفس العملية لبقية شروط الـ “else if” في البرنامج. بعد إجراء هذه التعديلات، يجب أن يتم تشغيل البرنامج بدون وجود أخطاء في هذا الجزء من الشيفرة.

المزيد من المعلومات

بالطبع، دعوني أضيف بعض المعلومات الإضافية حول الكود البرمجي الذي قدمته وحول الخطأ الذي تم اكتشافه.

في هذا السياق، يبدو أن الهدف من البرنامج هو قبول نسبة مئوية معينة (مدخلة من المستخدم) وفقًا لجدول التصنيف الذي يحدد الدرجة المرتبطة بها. في الكود الحالي، تم تحديد فئات مثل “A+”, “A”, “A-“, “B+” و “F” بناءً على النسب المحددة في كل فئة.

لتحسين قراءة الكود وزيادة فهمه، يمكن إجراء بعض التحسينات، مثل استخدام الثوابت لتعريف النسب المطلوبة لكل فئة بدلاً من استخدام الأرقام المباشرة. هذا يجعل الكود أكثر قابلية للصيانة والتعديل في المستقبل. على سبيل المثال:

cpp
#include #include using namespace std; const double A_PLUS_THRESHOLD = 98.0; const double A_THRESHOLD = 92.0; const double A_MINUS_THRESHOLD = 90.0; const double B_PLUS_THRESHOLD = 88.0; int main() { double percentage; cout << "Enter percentage: "; cin >> percentage; string letter; if (percentage >= A_PLUS_THRESHOLD) { letter = "A+"; } else if (percentage >= A_THRESHOLD) { letter = "A"; } else if (percentage >= A_MINUS_THRESHOLD) { letter = "A-"; } else if (percentage >= B_PLUS_THRESHOLD) { letter = "B+"; } else { letter = "F"; } cout << "Grade: " << letter << endl; return 0; }

هذا التحسين يجعل الكود أكثر قوة ويسهل فهم الشروط بشكل أفضل. كما يقلل من فرص حدوث أخطاء مستقبلية عند إجراء تعديلات في الكود.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر