Menu
Coddy logo textTech

חזרה: מנהל נקודות

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

challenge icon

אתגר

קל

בואו נבנה מודול Point מלא שמנהל קואורדינטה דו־ממדית. אתגר החזרה הזה משלב את כל מה שלמדת על התייחסות למבנים כאובייקטים: שימוש במצביעים כדי לשנות מצב ובמצביעי const לפעולות לקריאה בלבד.

תיצור שלושה קבצים:

  • point.h: הצהר על מבנה Point עם שני איברים מסוג מספר שלם: x ו-y. כמו כן, הצהר על שתי פונקציות שמתפקדות כמתודות:
    • point_move: מקבלת מצביע ל-Point יחד עם שני מספרים שלמים (dx ו-dy), ומזיזה את הנקודה על ידי הוספת הערכים האלה ל-x ול-y
    • point_print: מקבלת מצביע const ל-Point ומציגה את הקואורדינטות שלו (הפונקציה הזאת לא אמורה לשנות את הנקודה)
    השתמש בשומרי הכללה עם הסמל POINT_H.
  • point.c: ממש את שתי הפונקציות. חשוב היטב איזו פונקציה זקוקה למצביע רגיל (כדי לשנות את הנקודה) ואיזו משתמשת במצביע const (כדי לקרוא בבטחה בלי לשנות).
  • main.c: צור Point, הזז אותו והצג את מיקומו בשלבים שונים.

תקבל ארבעה מספרים שלמים כקלט: ה-x ההתחלתי, ה-y ההתחלתי, ערך dx (המרחק להזזה אופקית) ו-ערך dy (המרחק להזזה אנכית).

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

הפונקציה point_print צריכה להציג את הפלט בפורמט הזה:

Point: ({x}, {y})

לדוגמה, עם הקלטים 3, 5, 2 ו--1, הפלט יהיה:

Point: (3, 5)
Point: (5, 4)

נסו בעצמכם

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

int main() {
    // קרא את ערכי הקלט
    int x, y, dx, dy;
    scanf("%d", &x);
    scanf("%d", &y);
    scanf("%d", &dx);
    scanf("%d", &dy);
    
    // TODO: צור Point עם קואורדינטות התחלתיות (x, y)
    
    // TODO: הדפס את המיקום ההתחלתי באמצעות point_print
    
    // TODO: הזז את הנקודה ב-(dx, dy) באמצעות point_move
    
    // TODO: הדפס את המיקום החדש באמצעות point_print
    
    return 0;
}

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

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