פעולות נפוצות על מערכים
חלק מהיחידה יסודות במסלול ה-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;אתגר
קלצרו פונקציה בשם calculateStats שמקבלת מערך של ערכי double ואת גודל המערך כקלט ומבצעת את הפעולות הבאות:
- מחשבת את סכום כל האיברים במערך.
- מחשבת את הממוצע של האיברים במערך.
- מוצאת את האיבר הגדול ביותר במערך.
- מוצאת את האיבר הקטן ביותר במערך.
הפונקציה צריכה להחזיר מערך של ערכי double שמכיל את הסכום, הממוצע, הערך המרבי והערך המזערי, לפי הסדר הזה.
הערות חשובות:
- השתמשו בפרמטר
sizeכדי לקבוע את גבולות הלולאה: אל תשתמשו ב־std::size(). - כדי לאתחל את
maxואתmin, התחילו אותם ב־arr[0]. כך זה יעבוד נכון גם כשהמערך מכיל רק מספרים שליליים. - הקוד שנכתב מראש בתוך
main()כבר מקצה מערך דינמי באמצעותnewומשחרר אותו באמצעותdelete[]. כל שעליכם לעשות הוא להקצות את מערך התוצאות בתוך הפונקציה באמצעותnew double[4]ולהחזיר אותו. הערה: מצביעים וזיכרון דינמי באמצעותnewנלמדים לעומק ביחידה מאוחרת יותר. כאן עליכם רק לפעול לפי התבניתnew double[4]שמוצגת.
דרך פעולה מומלצת:
- אתחלו את
sum = 0, אתmax = arr[0]ואתmin = arr[0]. - בצעו לולאה מ־
i = 0ועדi < size, תוך צבירת הסכום ועדכון max/min לפי הצורך. - חשבו את הממוצע באמצעות
sum / size. - הקצו מערך חדש באמצעות
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;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 1
אופרטורים אריתמטייםאופרטור מודולוהגדלה/הקטנההגדלה/הקטנה לאחר הפעולהקיצורים אריתמטייםאופרטורי השוואההשוואת מחרוזות5אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 311יסודות המערכים
הכרזה על מערכיםגישה לאיבריםשינוי איבריםסיכום – הדפסת מערך בפורמט קריאמערכים ופונקציותסיכום – מערך מכפלותסיכום – מערך הפוךלולאת for משופרתפעולות נפוצות על מערכיםתרגלו בעצמכם: קומפיילר C++ אונליין