Menu
Coddy logo textTech

פעולות נפוצות על מערכים

חלק מהיחידה יסודות במסלול ה-C++ של Coddy. שיעור 66 מתוך 74.

הנה כמה פעולות נפוצות על מערכים:

  • מצא את הסכום של כל האיברים במערך:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • מצאו את הממוצע של איברים במערך:
int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);
std::cout << "Average: " << average;
  • מצאו את האיבר המרבי במערך:
int numbers[] = {1, 5, 2, 9, 3};
int max = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
}
std::cout << "Max: " << max;
  • מצאו את האיבר המינימלי במערך:
int numbers[] = {1, 5, 2, 9, 3};
int min = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }
}
std::cout << "Min: " << min;
challenge icon

אתגר

קל

צרו פונקציה בשם calculateStats שמקבלת מערך של ערכי double ואת גודל המערך כקלט ומבצעת את הפעולות הבאות:

  1. מחשבת את סכום כל האיברים במערך.
  2. מחשבת את הממוצע של האיברים במערך.
  3. מוצאת את האיבר הגדול ביותר במערך.
  4. מוצאת את האיבר הקטן ביותר במערך.

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


הערות חשובות:
  • השתמשו בפרמטר size כדי לקבוע את גבולות הלולאה: אל תשתמשו ב־std::size().
  • כדי לאתחל את max ואת min, התחילו אותם ב־arr[0]. כך זה יעבוד נכון גם כשהמערך מכיל רק מספרים שליליים.
  • הקוד שנכתב מראש בתוך main() כבר מקצה מערך דינמי באמצעות new ומשחרר אותו באמצעות delete[]. כל שעליכם לעשות הוא להקצות את מערך התוצאות בתוך הפונקציה באמצעות new double[4] ולהחזיר אותו. הערה: מצביעים וזיכרון דינמי באמצעות new נלמדים לעומק ביחידה מאוחרת יותר. כאן עליכם רק לפעול לפי התבנית new double[4] שמוצגת.

דרך פעולה מומלצת:
  1. אתחלו את sum = 0, את max = arr[0] ואת min = arr[0].
  2. בצעו לולאה מ־i = 0 ועד i < size, תוך צבירת הסכום ועדכון max/min לפי הצורך.
  3. חשבו את הממוצע באמצעות sum / size.
  4. הקצו מערך חדש באמצעות new double[4], שמרו בו את ארבעת התוצאות לפי הסדר והחזירו אותו.

נסו בעצמכם

#include <iostream>

double* calculateStats(double arr[], int size) {
    // יש לחשב 4 ערכים לפני ששומרים אותם ב-newArr
    // אתחלו משתנים עבור sum (מתחיל ב-0), max ו-min (שניהם מתחילים ב-arr[0])
    // השתמשו בלולאת for כדי לעבור על המערך
    // בתוך הלולאה:
    //   - הוסיפו כל איבר ל-sum
    //   - השוו כל איבר ל-max ועדכנו את max אם האיבר גדול יותר
    //   - השוו כל איבר ל-min ועדכנו את min אם האיבר קטן יותר
    // חשבו average = sum / size (אחרי הלולאה)
    

    double* newArr = new double[4];
    newArr[0] = sum;
    newArr[1] = average;
    newArr[2] = max;
    newArr[3] = min;

    return newArr;
}

int main() {
    int n;

    std::cin >> n;
    std::cin.ignore();
    double arr[n];

    for (int i = 0; i < n; i++) {
        double val;
        std::cin >> val;
        arr[i] = val;
    }

    double* stats = calculateStats(arr, n);
    std::cout << "Sum: " << stats[0] << std::endl;
    std::cout << "Average: " << stats[1] << std::endl;
    std::cout << "Maximum: " << stats[2] << std::endl;
    std::cout << "Minimum: " << stats[3] << std::endl;
    delete[] stats;
    return 0;
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

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