Menu
Coddy logo textTech

חזרה – מחשבון פשוט

חלק מהיחידה תכנות מונחה עצמים במסלול ה-GO של Coddy. שיעור 11 מתוך 107.

challenge icon

אתגר

קשה

בנו Calculator מלאה תוך שימוש בכל מה שלמדתם:

  • מבנה (שדות מיוצאים): הגדירו את Calculator עם Name (string), LastResult (float64) ו־History (int)
  • פונקציית בנאי: NewCalculator(name string) מחזירה *Calculator. אם השם ריק, השתמשו כברירת מחדל ב־"Unnamed"
  • מקבל ערך: GetInfo() מחזירה את שם המחשבון כמחרוזת מעוצבת
  • מקבלי מצביע: כל אחת מהפונקציות Add, Subtract ו־Multiply שומרת את התוצאה ב־LastResult ומגדילה את History
  • חלוקה: מקבל מצביע שמחזיר (float64, string). אם מחלקים באפס, החזירו 0 ואת "Error: division by zero" בלי לעדכן את History או את LastResult

נסו בעצמכם

package main

import "fmt"

func main() {
    var name string
    var a, b float64
    fmt.Scan(&name, &a, &b)

    calc := NewCalculator(name)

    fmt.Println(calc.GetInfo())
    fmt.Printf("History: %d\n", calc.History)

    fmt.Printf("%.0f + %.0f = %.2f\n", a, b, calc.Add(a, b))
    fmt.Printf("%.0f - %.0f = %.2f\n", a, b, calc.Subtract(a, b))
    fmt.Printf("%.0f * %.0f = %.2f\n", a, b, calc.Multiply(a, b))

    result, err := calc.Divide(a, b)
    if err != "" {
        fmt.Println(err)
    } else {
        fmt.Printf("%.0f / %.0f = %.2f\n", a, b, result)
    }

    fmt.Printf("History: %d\n", calc.History)
    fmt.Printf("Last Result: %.2f\n", calc.LastResult)
}

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

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