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++