Menu
CoddyTech

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

חלק מהיחידה יסודות במסלול ה-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 ועדכנו אותו אם האיבר גדול יותר
    //   - השוו כל איבר ל-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++ אונליין