في البداية، يجدر بنا أن نلفت الانتباه إلى أن الكود الذي قدمته يستخدم تركيبة قديمة من لغة البرمجة C++، حيث تظهر بعض الجمل القديمة التي لم تعد مستخدمة في الإصدارات الحديثة من اللغة. على سبيل المثال، استخدام #include
لم يعد متبعًا، بل يجب استخدام #include
في الإصدارات الحديثة.
لنقم بتحسين الكود وإضافة تفصيلات حول كيفية استخدام الـ switch case. أولاً، يجب تعديل الكود ليتوافق مع المعايير الحديثة للغة C++:
cpp#include
int sum(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int multi(int a, int b) {
return a * b;
}
float div(int a, int b) {
if (b != 0) {
return static_cast<float>(a) / b;
} else {
std::cerr << "Error: Division by zero." << std::endl;
return 0; // يمكنك تعديل هذا الجزء حسب احتياجاتك
}
}
int main() {
int x, y;
std::cout << "Enter the value of x = ";
std::cin >> x;
std::cout << "Enter the value of y = ";
std::cin >> y;
// استخدام switch case للقيام بالعمليات الحسابية
std::cout << "Choose an operation:" << std::endl;
std::cout << "1. Addition\n2. Subtraction\n3. Multiplication\n4. Division" << std::endl;
int choice;
std::cin >> choice;
switch (choice) {
case 1:
std::cout << "x + y = " << sum(x, y) << std::endl;
break;
case 2:
std::cout << "x - y = " << sub(x, y) << std::endl;
break;
case 3:
std::cout << "x * y = " << multi(x, y) << std::endl;
break;
case 4:
std::cout << "x / y = " << div(x, y) << std::endl;
break;
default:
std::cerr << "Error: Invalid choice." << std::endl;
break;
}
return 0;
}
هذا الكود يطلب من المستخدم إدخال عددين ومن ثم يطلب اختيار العملية الحسابية باستخدام switch case، مما يضيف مرونة وإمكانية تحديد نوع العملية بشكل ديناميكي.
المزيد من المعلومات
بالطبع، يُمكننا توسيع المعلومات حول الكود وشرح بعض النقاط البارزة:
-
تحسين الكود:
- تم استبدال
#include
بـ#include
لأن الإصدارات الحديثة من C++ تستخدم
دون اللاحقة.h
. - تم تغيير
main()
إلىint main()
للامتثال للمعايير الحديثة. - تم تحسين وتبسيط الدوال الحسابية.
- تم استبدال
-
إضافة switch case:
- تم إضافة بنية
switch
لتحديد نوع العملية الحسابية التي يرغب المستخدم في إجرائها. - تم استخدام
std::cerr
لطباعة رسائل الخطأ إلىstderr
بدلاً منstd::cout
، حيث يعتبر هذا الأمر أفضل بالنسبة للأخطاء.
- تم إضافة بنية
-
التحقق من القسمة على الصفر:
- تم إضافة فحص لتجنب القسمة على الصفر في الدالة
div
. إذا كان المستخدم يقوم بتجربة القسمة على الصفر، سيتم طباعة رسالة خطأ.
- تم إضافة فحص لتجنب القسمة على الصفر في الدالة
-
تحسين التبادل بين المستخدم والبرنامج:
- تم إضافة رسائل توجيه للمستخدم لجعل التفاعل أكثر وضوحًا.
- يُطلب من المستخدم اختيار العملية الحسابية المرغوبة باستخدام switch case.
-
التعامل مع الخطأ:
- تم إضافة إمكانية التعامل مع حالة اختيار غير صحيحة باستخدام
default
في switch case.
- تم إضافة إمكانية التعامل مع حالة اختيار غير صحيحة باستخدام
تم تصميم الكود ليكون أكثر قوة ومرونة، مع إضافة التحسينات المستمدة من المعايير والممارسات الحديثة في لغة C++.