Menu
CoddyTech

Operazioni comuni sugli array

Fa parte della sezione Fondamenti del percorso C++ di Coddy. Lezione 66 di 74.

Ecco alcune operazioni comuni sugli array:

  • Trova la somma di tutti gli elementi in un array:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • Calcola la media degli elementi di 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;
  • Trova l'elemento massimo in 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;
  • Trova l'elemento minimo in 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

Sfida

Facile

Crea una funzione chiamata calculateStats che accetta in input un array di double e la dimensione dell'array ed esegue le seguenti operazioni:

  1. Calcola la somma di tutti gli elementi dell'array.
  2. Calcola la media degli elementi dell'array.
  3. Trova l'elemento massimo nell'array.
  4. Trova l'elemento minimo nell'array.

La funzione deve restituire un array di double contenente la somma, la media, il massimo e il minimo, in quest'ordine.


Note importanti:
  • Usa il parametro size per controllare il ciclo: non usare std::size().
  • Per inizializzare max e min, impostali inizialmente a arr[0]. Questo funziona correttamente anche quando l'array contiene solo numeri negativi.
  • Il codice precompilato in main() alloca già un array dinamico usando new e lo libera con delete[]. Devi solo allocare l'array dei risultati all'interno della tua funzione usando new double[4] e restituirlo. Nota: i puntatori e la memoria dinamica con new sono trattati in modo approfondito in una sezione successiva. Qui devi solo seguire lo schema new double[4] mostrato.

Approccio suggerito:
  1. Inizializza sum = 0, max = arr[0] e min = arr[0].
  2. Esegui un ciclo da i = 0 a i < size, accumulando la somma e aggiornando max/min quando necessario.
  3. Calcola la media come sum / size.
  4. Alloca un nuovo array con new double[4], memorizza i quattro risultati in ordine e restituiscilo.

Provalo tu

#include <iostream>

double* calculateStats(double arr[], int size) {
    // Dovrai calcolare 4 valori prima di memorizzarli in newArr
    // Inizializza le variabili sum (partendo da 0), max e min (entrambe partendo da arr[0])
    // Usa un ciclo for per scorrere l'array
    // All'interno del ciclo:
    //   - Aggiungi ogni elemento a sum
    //   - Confronta ogni elemento con max e aggiorna max se l'elemento è maggiore
    //   - Confronta ogni elemento con min e aggiorna min se l'elemento è minore
    // Calcola average = sum / size (dopo il ciclo)
    

    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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore C++ online