Menu
Coddy logo textTech

Operaciones comunes con Arrays

Parte de la sección Fundamentos del Journey de C++ de Coddy — lección 66 de 74.

Aquí tienes algunas operaciones comunes con arrays:

  • Encuentra la suma de todos los elementos en un arreglo:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • Encuentra el promedio de los elementos en un arreglo:
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;
  • Encuentra el elemento máximo en un array:
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;
  • Encuentra el elemento mínimo en un array:
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

Desafío

Fácil

Crea una función llamada calculateStats que reciba un array de doubles y el tamaño del array como entrada y realice las siguientes operaciones:

  1. Calcula la suma de todos los elementos del array.
  2. Calcula el promedio de los elementos del array.
  3. Encuentra el elemento máximo en el array.
  4. Encuentra el elemento mínimo en el array.

La función debe devolver un array de doubles que contenga la suma, el promedio, el máximo y el mínimo, en ese orden.


Notas importantes:
  • Usa el parámetro size para controlar tu bucle — no uses std::size().
  • Para inicializar max y min, empiézalos en arr[0] — esto funciona correctamente incluso cuando el array contiene solo números negativos.
  • El código preescrito en main() ya asigna un array dinámico usando new y lo libera con delete[] — solo necesitas asignar el array de resultados dentro de tu función usando new double[4] y devolverlo. Nota: los punteros y la memoria dinámica con new se introducen en profundidad en una sección posterior — aquí solo necesitas seguir el patrón new double[4] mostrado.

Enfoque sugerido:
  1. Inicializa sum = 0, max = arr[0] y min = arr[0].
  2. Realiza un bucle desde i = 0 hasta i < size, acumulando la suma y actualizando max/min según sea necesario.
  3. Calcula el promedio como sum / size.
  4. Asigna un nuevo array con new double[4], almacena los cuatro resultados en orden y devuélvelo.

Pruébalo tú mismo

#include <iostream>

double* calculateStats(double arr[], int size) {
    // Necesitarás calcular 4 valores antes de almacenarlos en newArr
    // Inicializa variables para sum (empieza en 0), max y min (ambos empiezan en arr[0])
    // Usa un bucle for para iterar a través del arreglo
    // Dentro del bucle:
    //   - Suma cada elemento a sum
    //   - Compara cada elemento con max y actualiza si es mayor
    //   - Compara cada elemento con min y actualiza si es menor
    // Calcula average = sum / size (después del bucle)
    

    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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos