مراجعة - القسمة الآمنة
جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 53 من 56.
التحدي
سهلقم بإنشاء برنامج ينفذ عملية قسمة آمنة باستخدام معالجة شاملة للاستثناءات. سيختبر هذا التحدي قدرتك على الجمع بين تصميم الدوال وإدارة الاستثناءات للتعامل مع أخطاء القسمة على صفر بسلاسة.
سيتم توفير المدخلات التالية:
- عدد عشري
numeratorيمثل البسط (العدد المراد قسمته) - عدد عشري
denominatorيمثل المقام (العدد الذي سيتم القسمة عليه)
يجب أن يقوم برنامجك بما يلي:
- إنشاء دالة باسم
safeDivideتأخذ معاملين من نوع double (البسط والمقام) - داخل الدالة، تحقق مما إذا كان المقام يساوي صفراً
- إذا كان المقام صفراً، قم بـ
throwللسلسلة النصية"Division by zero error" - إذا لم يكن المقام صفراً، احسب نتيجة القسمة وأرجعها كـ double
- في الدالة الرئيسية، استدعِ
safeDivideداخل كتلةtryمع قيم المدخلات - استخدم كتلة
catchلمعالجة استثناء السلسلة النصية الملقى - اطبع الرسالة المناسبة بناءً على ما إذا كانت القسمة قد نجحت أم فشلت
استخدم تنسيق المخرجات الدقيق التالي:
في حالة القسمة الناجحة:
Result: [division_result]في حالة خطأ القسمة على صفر:
Error: Division by zero errorتذكر أنه عندما يكون المقام صفراً، يجب أن تقوم دالتك فوراً بـ throw لاستثناء قبل محاولة إجراء القسمة. يجب أن تحدد كتلة catch النوع const char* للتعامل مع السلسلة النصية الملقاة. عند إلقاء استثناء، سينتقل البرنامج مباشرة من عبارة throw إلى كتلة catch المطابقة، مما يمنع حدوث أي قسمة على صفر ويسمح لبرنامجك بمعالجة الخطأ بسلاسة بدلاً من الانهيار.
جرّب بنفسك
#include <iostream>
using namespace std;
int main() {
// قراءة المدخلات
double numerator, denominator;
cin >> numerator >> denominator;
// المهام المطلوبة: اكتب كودك هنا
// قم بإنشاء دالة safeDivide فوق ()main
// استخدم كتلة try-catch للتعامل مع الاستثناءات
return 0;
}جميع دروس Logic & Flow
1المؤشرات والذاكرة
ما هو المؤشر؟معامل العنوان (Address-Of)معامل الوصول للقيمة (Dereference)المؤشرات الفارغة (Null Pointers)المؤشرات والمصفوفاتالذاكرة الديناميكية باستخدام 'new'تحرير الذاكرة باستخدام 'delete'مراجعة - تمارين على المؤشرات2المتجهات (المصفوفات الديناميكية)
مقدمة إلى std::vectorإنشاء Vectorإضافة العناصرالوصول إلى العناصرحجم الـ Vectorالتكرار باستخدام For Loopالـ Range-Based For Loopإزالة العناصرملخص - عمليات الـ Vector5مشروع: أداة المخزون
إعداد المشروعإضافة وتحديث العناصر8أساسيات معالجة الأخطاء
مقدمة في الاستثناءاتكتل 'try' و 'catch'الكلمة المفتاحية 'throw'أنواع الاستثناءات المختلفةمعالج كافة الاستثناءاتمراجعة - القسمة الآمنة