Menu
Coddy logo textTech

לוגיקת משיכה

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C של Coddy. שיעור 25 מתוך 61.

challenge icon

אתגר

קל

חשבון הבנק שלך גדל! עכשיו נוסיף את היכולת למשוך כספים. בניגוד להפקדות, למשיכות יש אילוץ נוסף. אי אפשר למשוך יותר כסף ממה שיש לך. פונקציית המשיכה שלך צריכה לבדוק את היתרה לפני שהיא מאפשרת את הפעולה.

בהתבסס על פרויקט חשבון הבנק הקיים שלך, תרחיב את המודול באמצעות הוספת פונקציונליות למשיכת כספים. כאן הכימוס באמת בא לידי ביטוי. הפונקציה שלך יכולה לגשת ליתרה המוסתרת כדי לוודא שיש מספיק כספים, דבר שקוד חיצוני לעולם לא יכול לעשות ישירות.

תעבוד עם שלושה קבצים:

  • account.h: הוסף אבטיפוס של פונקציה חדשה: withdraw. פונקציה זו מקבלת מצביע ל-Account וסכום מסוג double, ומחזירה int (1 במקרה של הצלחה, 0 אם המשיכה נכשלת). השאר את כל ההצהרות הקיימות שלך עבור create_account, destroy_account ו-deposit.
  • account.c: ממש את הפונקציה withdraw. משיכה תצליח רק אם מתקיימים שני תנאים: הסכום חייב להיות חיובי (גדול מאפס), ולחשבון חייבים להיות מספיק כספים (יתרה >= סכום). אם שני התנאים מתקיימים, הפחת את הסכום מהיתרה והחזר 1. אחרת, החזר 0 בלי לשנות את היתרה.
  • main.c: הצג את תהליך ההפקדה והמשיכה המלא שלך. צור חשבון, בצע הפקדה כדי לקבוע את היתרה, ואז בדוק משיכות: גם מוצלחות וגם לא מוצלחות.

תקבל ארבעה קלטים: מזהה החשבון (מספר שלם), סכום הפקדה (לקביעת הכספים הראשוניים), סכום משיכה מוצלחת (קטן או שווה לסכום שהופקד), ו-סכום משיכה שנכשלה (גדול מהיתרה שנותרה).

בקובץ הראשי שלך, צור חשבון והדפס אישור. הפקד את הכספים הראשוניים והדפס את התוצאה. לאחר מכן בצע את המשיכה המוצלחת והדפס אם היא הצליחה. לבסוף, נסה לבצע את המשיכה שאמורה להיכשל (אין מספיק כספים) והדפס את התוצאה. השמד את החשבון ואשר את הניקוי.

הדפס את הפלט בפורמט הזה:

Account 1001 created
Deposit 500.00: 1
Withdraw 200.00: 1
Withdraw 400.00: 0
Account destroyed

כאשר 1001 הוא מזהה החשבון, 500.00 הוא סכום ההפקדה, 200.00 הוא סכום המשיכה המוצלחת, ו-400.00 הוא סכום המשיכה שנכשלה (כי נותרו רק 300.00 לאחר המשיכה הראשונה). עצב את כל הסכומים עם שתי ספרות אחרי הנקודה העשרונית באמצעות %.2f.

פונקציית המשיכה שלך מדגימה את כוחה של הכימוס. היא יכולה לבדוק את היתרה המוסתרת באופן פנימי כדי לקבל החלטות, ואילו לקוד חיצוני אין דרך לעקוף את האימות הזה או להציץ ביתרה ישירות.

נסו בעצמכם

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    double valid_amount;
    scanf("%lf", &valid_amount);
    
    double invalid_amount;
    scanf("%lf", &invalid_amount);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    int result_invalid = deposit(account, invalid_amount);
    printf("Deposit %.2f: %d\n", invalid_amount, result_invalid);
    
    int result_valid = deposit(account, valid_amount);
    printf("Deposit %.2f: %d\n", valid_amount, result_valid);
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C אונליין