Menu
Coddy logo textTech

סיכום: מעבר על מערך באמצעות מצביעים

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

challenge icon

אתגר

קל

כתבו תוכנית C שמממשת פונקציה לחישוב סכום כל האיברים במערך של מספרים שלמים באמצעות חשבון מצביעים ושקילות בין מערך למצביע. על התוכנית שלכם:

  1. ליצור פונקציה בשם calculateSum שמקבלת שני פרמטרים:
    • מצביע למספר שלם (int *arr) שמייצג את המערך
    • מספר שלם (size) שמייצג את מספר האיברים במערך
  2. בתוך הפונקציה calculateSum:
    • לאתחל משתנה sum ל-0
    • ליצור משתנה מצביע ptr ולהגדיר אותו כך שיצביע לתחילת המערך
    • להשתמש בלולאה כדי לעבור על המערך באמצעות חשבון מצביעים
    • בכל איטרציה, להוסיף את הערך שעליו מצביע ptr אל sum
    • להגדיל את המצביע כדי לעבור לאיבר הבא
    • להחזיר את הסכום שחושב
  3. בפונקציה main:
    • לקרוא מספר שלם n שמייצג את גודל המערך
    • להצהיר על מערך של מספרים שלמים בגודל n
    • לקרוא n מספרים שלמים מהקלט כדי למלא את המערך
    • לקרוא לפונקציה calculateSum עם המערך והגודל שלו
    • להדפיס את התוצאה בפורמט: "Sum: [value]"

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

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

5
10 20 30 40 50

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

Sum: 150

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

נסו בעצמכם

#include <stdio.h>

// TODO: כתבו כאן את הפונקציה calculateSum

int main() {
    int n;
    scanf("%d", &n);
    
    int arr[n];
    
    // קראו את איברי המערך
    for(int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    // TODO: קראו לפונקציה calculateSum ושמרו את התוצאה
    
    // TODO: הדפיסו את התוצאה בפורמט "Sum: [value]"
    
    return 0;
}

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

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