Menu
CoddyTech

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 arreglos:

  • Encuentra la suma de todos los elementos de 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 de un 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;
  • Encuentra el elemento máximo de 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 de un arreglo:
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 tome como entrada un arreglo de valores double y el tamaño del arreglo, y realice las siguientes operaciones:

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

La función debe devolver un arreglo de valores double 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 el bucle: no uses std::size().
  • Para inicializar max y min, asígnales inicialmente arr[0]. Esto funciona correctamente incluso cuando el arreglo contiene solo números negativos.
  • El código ya escrito en main() asigna un arreglo dinámico usando new y lo libera con delete[]. Solo necesitas asignar el arreglo de resultados dentro de tu función usando new double[4] y devolverlo. Nota: los punteros y la memoria dinámica con new se explican 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. Recorre 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 arreglo con new double[4], guarda 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 las variables sum (empieza en 0), max y min (ambas empiezan en arr[0])
    // Usa un bucle for para recorrer el arreglo
    // Dentro del bucle:
    //   - Suma cada elemento a sum
    //   - Compara cada elemento con max y actualiza max si el elemento es mayor
    //   - Compara cada elemento con min y actualiza min si el elemento 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

Practica por tu cuenta: Compilador de C++ online