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;Sfida
FacileCrea una funzione chiamata calculateStats che accetti in input un array di double e la dimensione dell’array ed esegua le seguenti operazioni:
- Calcola la somma di tutti gli elementi dell’array.
- Calcola la media degli elementi dell’array.
- Trova l’elemento massimo dell’array.
- 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
sizeper controllare il ciclo: non usarestd::size(). - Per inizializzare
maxemin, impostali inizialmente suarr[0]. Funziona correttamente anche quando l’array contiene solo numeri negativi. - Il codice già scritto in
main()alloca già un array dinamico usandonewe lo libera condelete[]. Devi solo allocare l’array dei risultati all’interno della tua funzione usandonew double[4]e restituirlo. Nota: i puntatori e la memoria dinamica connewvengono approfonditi in una sezione successiva. Qui devi solo seguire lo schemanew double[4]mostrato.
Approccio consigliato:
- Inizializza
sum = 0,max = arr[0]emin = arr[0]. - Scorri da
i = 0fino ai < size, accumulando la somma e aggiornando max/min quando necessario. - Calcola la media come
sum / size. - 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;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 1
Operatori aritmeticiOperatore moduloIncremento/DecrementoPost-incremento/Post-decrementoAbbreviazioni aritmeticheOperatori di confrontoConfronto tra stringhe7Fondamenti di input/output
Istruzione coutIstruzione cinInserimento di stringheRipasso - Fino a 120Ripasso - Vero o falso5Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Riepilogo - Logica sempliceOperatori logici Parte 311Fondamenti degli array
Dichiarare gli arrayAccedere agli elementiModificare gli elementiRipasso - Visualizzare l’array in modo leggibileArray e funzioniRipasso - Prodotto dell’arrayRipasso - Array invertitoCiclo for-eachOperazioni comuni sugli array3Variabili Parte 2
Dichiarazione del tipoConvenzioni di denominazioneRiepilogo - Inizializzare le variabiliConversione di tipo Parte 1Conversione di tipo Parte 26Decisioni
Istruzione ifIf-elseIstruzione switchOperatore condizionaleRiepilogo - If-elseIf-else annidatiEsercitati da solo: Compilatore C++ online