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) {
    // Перед сохранением в newArr необходимо вычислить 4 значения
    // Инициализируйте переменные 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++