Menu
Coddy logo textTech

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

Часть раздела Основы путешествия по 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], и вернуть его.

Рекомендуемый подход:
  1. Инициализируйте sum = 0, max = arr[0] и min = arr[0].
  2. Запустите цикл от i = 0 до i < size, накапливая сумму и обновляя max/min по мере необходимости.
  3. Вычислите среднее значение как sum / size.
  4. Выделите новый массив с помощью new double[4], сохраните четыре результата по порядку и верните его.

Шпаргалка

Общие операции с массивами в C++:

Сумма всех элементов:

int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}

Среднее арифметическое элементов:

int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);

Максимальный элемент:

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];
    }
}

Минимальный элемент:

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];
    }
}

Попробуйте сами

#include <iostream>

double* calculateStats(double arr[], int size) {
    // Вам нужно будет вычислить 4 значения перед их сохранением в newArr
    // Инициализируйте переменные для суммы (начните с 0), максимума и минимума (обе начинаются с arr[0])
    // Используйте цикл for для итерации по массиву
    // Внутри цикла:
    //   - Добавляйте каждый элемент к сумме
    //   - Сравнивайте каждый элемент с максимумом и обновляйте, если он больше
    //   - Сравнивайте каждый элемент с минимумом и обновляйте, если он меньше
    // Вычислите среднее значение = 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Проверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы