Menu
Coddy logo textTech

גישה לאיברי struct

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 41 מתוך 63.

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

התחביר לגישה לחברי struct פשוט:

structVariable.memberName

בעזרת דוגמת המבנה Point שלנו, אפשר גם לקרוא את הערכים של השדות שלו וגם לכתוב בהם:

struct Point p1;

// כתיבה לשדות של struct
p1.x = 10;
p1.y = 20;

// קריאה משדות של struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);

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

challenge icon

אתגר

קל

צרו תוכנית C שמדגימה גישה לאיברי struct ושינוי שלהם באמצעות אופרטור הנקודה. התוכנית שלכם צריכה:

  1. להגדיר struct בשם Car עם האיברים הבאים:
    • מספר שלם year לאחסון שנת הייצור
    • מערך תווים brand בגודל 20 לאחסון מותג המכונית
    • מספר שלם mileage לאחסון הקילומטראז׳ הנוכחי
    • מספר ממשי price לאחסון מחיר המכונית
  2. ליצור משתנה מסוג Car בשם myCar
  3. לקרוא את ערכי הקלט הבאים ולהקצות אותם לאיברי ה-struct באמצעות אופרטור הנקודה:
    • לקרוא מספר שלם עבור השנה ולהקצות אותו ל-myCar.year
    • לקרוא מחרוזת עבור המותג ולהקצות אותה ל-myCar.brand
    • לקרוא מספר שלם עבור הקילומטראז׳ ולהקצות אותו ל-myCar.mileage
    • לקרוא מספר ממשי עבור המחיר ולהקצות אותו ל-myCar.price
  4. לאחר קריאת כל הערכים, לבצע את הפעולות הבאות:
    • להגדיל את הקילומטראז׳ ב-1000 באמצעות myCar.mileage += 1000;
    • להפחית את המחיר ב-500.0 באמצעות myCar.price -= 500.0;
  5. להדפיס את פרטי המכונית באמצעות אופרטור הנקודה כדי לגשת לכל איבר, בפורמט המדויק הבא:
    • Car Details:
    • Year: [year]
    • Brand: [brand]
    • Mileage: [mileage]
    • Price: [price]

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

לדוגמה, אם הקלט הוא:

2020
Toyota
50000
25000.50

הפלט שלכם צריך להיות:

Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50

נסו בעצמכם

#include <stdio.h>
#include <string.h>

// TODO: הגדירו כאן את המבנה Car

int main() {
    // TODO: צרו משתנה מסוג Car בשם myCar
    
    // קראו את ערכי הקלט
    int year;
    char brand[20];
    int mileage;
    float price;
    
    scanf("%d", &year);
    scanf("%s", brand);
    scanf("%d", &mileage);
    scanf("%f", &price);
    
    // TODO: הציבו את ערכי הקלט בשדות המבנה באמצעות אופרטור הנקודה
    
    // TODO: שנו את הקילומטראז' ואת המחיר בהתאם להוראות
    
    // TODO: הדפיסו את פרטי המכונית באמצעות אופרטור הנקודה
    printf("Car Details:\n");
    // הדפיסו כאן את Year, Brand, Mileage ו-Price
    
    return 0;
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

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