Menu
Coddy logo textTech

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 di un array:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • Trova la media degli elementi in 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 accetti in input un array di double e la dimensione dell’array ed esegua 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 dell’array.
  4. Trova l’elemento minimo dell’array.

La funzione deve restituire un array di double contenente, nell’ordine, la somma, la media, il massimo e il minimo.


Note importanti:
  • Usa il parametro size per controllare il ciclo: non usare std::size().
  • Per inizializzare max e min, impostali inizialmente su arr[0]. Funziona correttamente anche quando l’array contiene solo numeri negativi.
  • Il codice già scritto 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 vengono approfonditi in una sezione successiva. Qui devi solo seguire lo schema new double[4] mostrato.

Approccio consigliato:
  1. Inizializza sum = 0, max = arr[0] e min = arr[0].
  2. Scorri da i = 0 fino 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 nell’ordine indicato e restituiscilo.

Provalo tu

#include <iostream>

double* calculateStats(double arr[], int size) {
    // Devi 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