סיכום – חלוקה בטוחה
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C++ של Coddy. שיעור 53 מתוך 56.
אתגר
קלצרו תוכנית שמממשת חילוק בטוח באמצעות טיפול מקיף בחריגות. האתגר הזה יבחן את היכולת שלכם לשלב תכנון פונקציות עם ניהול חריגות כדי לטפל בשגיאות חלוקה באפס בצורה אלגנטית.
הקלטים הבאים יסופקו:
- ערך double
numeratorשמייצג את המספר שיש לחלק - ערך double
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;
// TODO: כתבו כאן את הקוד שלכם
// צרו את הפונקציה safeDivide מעל main()
// השתמשו בבלוק try-catch כדי לטפל בחריגות
return 0;
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מצביעים וזיכרון
מהו מצביע?אופרטור קבלת כתובתאופרטור ביטול הפניהמצביעי Nullמצביעים ומערכיםזיכרון דינמי באמצעות 'new'שחרור זיכרון באמצעות 'delete'סיכום — תרגול מצביעים2וקטורים (מערכים דינמיים)
היכרות עם std::vectorיצירת וקטורהוספת איבריםגישה לאיבריםגודל הווקטורמעבר על איברים באמצעות לולאת forלולאת for מבוססת טווחהסרת איבריםסיכום — פעולות על וקטורים5פרויקט: כלי לניהול מלאי
הגדרת הפרויקטהוספה ועדכון של פריטים8טיפול בסיסי בשגיאות
מבוא לחריגותבלוקי 'try' ו-'catch'מילת המפתח 'throw'סוגים שונים של חריגותמטפל לכל סוגי החריגותסיכום – חלוקה בטוחהתרגלו בעצמכם: קומפיילר C++ אונליין