Menu
Coddy logo textTech

Основные операции с массивами

Часть раздела Основы путешествия по C++ на Coddy. Урок 66 из 74.

Вот несколько распространённых операций с массивами:

  • Найдите sum всех элементов в массиве:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • Найдите average элементов в array:
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;
  • Найдите Maximum элемент в массиве:
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, которая принимает в качестве входных данных array значений типа double и размер array, а затем выполняет следующие операции:

  1. Вычисляет sum всех элементов в array.
  2. Вычисляет average элементов в array.
  3. Находит максимальный элемент в array.
  4. Находит минимальный элемент в array.

Функция должна возвращать array значений типа double, содержащий sum, average, максимальное и минимальное значения именно в таком порядке.


Важные примечания:
  • Используйте параметр size для управления циклом: не используйте std::size().
  • Чтобы инициализировать max и min, задайте им начальное значение arr[0]. Это корректно работает даже в том случае, если array содержит только отрицательные числа.
  • Предварительно написанный код в main() уже выделяет динамический array с помощью new и освобождает его с помощью delete[]. Вам нужно только выделить array для результата внутри функции с помощью new double[4] и вернуть его. Примечание: указатели и динамическая память с new подробно рассматриваются в следующем разделе. Здесь вам нужно только следовать показанному шаблону new double[4].

Предлагаемый подход:
  1. Инициализируйте sum = 0, max = arr[0] и min = arr[0].
  2. Выполните цикл от i = 0 до i < size, накапливая sum и при необходимости обновляя max/min.
  3. Вычислите average как sum / size.
  4. Выделите новый array с помощью 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++