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 habituales 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;
  • Calcula el promedio de los elementos de 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 de un arreglo:
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 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 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 el valor arr[0]. Esto funciona correctamente incluso cuando el arreglo contiene solo números negativos.
  • El código preescrito en main() ya asigna memoria para un arreglo dinámico mediante new y la libera con delete[]. Solo necesitas asignar memoria para el arreglo de resultados dentro de tu función mediante 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] que se muestra.

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 memoria para un arreglo nuevo 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) {
    // Tendrás que 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