Trovare il valore più grande di un array in C e C++
In questa lezione troverai il valore più grande di un array confrontando gli elementi uno per uno.
Introduzione
Per trovare il valore più grande usiamo una variabile con il valore massimo visto finora e la confrontiamo con ogni elemento rimasto. Ogni volta che troviamo un elemento più grande, aggiorniamo questa variabile.
Punti importanti
- Attiva gli avvisi del compilatore (compiler warning) e correggili tutti.
- Comprendi bene il tipo di dato e la durata (lifetime) di ogni valore.
- Controlla sempre i dati in ingresso e i limiti degli indici degli array.
Esempi di codice C e C++
#include <stdio.h>
int main(void) {
int values[] = {-4, 7, 23, 9, 12}; int maximum = values[0];
// Compare every remaining value with the current maximum.
for (size_t i = 1; i < sizeof values / sizeof values[0]; ++i)
if (values[i] > maximum) maximum = values[i];
printf("max=%d\n", maximum);
}
max=23
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector values{-4, 7, 23, 9, 12};
// max_element returns an iterator to the largest value.
std::cout << "max=" << *std::max_element(values.begin(), values.end()) << '\n';
}
max=23
Confronto tra C e C++
La variabile maximum parte dal primo elemento e non da 0. Così il programma resta corretto quando l'array contiene solo numeri negativi, caso in cui partire da 0 darebbe un risultato sbagliato. Il ciclo scorre dal secondo elemento e aggiorna maximum quando trova un valore più grande; il risultato è max=23.
C usa piccole funzioni procedurali e mostra apertamente come i dati sono rappresentati in memoria.
C++ continua a permettere il lavoro a basso livello, ma aggiunge tipi di libreria e astrazioni più sicure.
Esercizi di approfondimento
Esegui entrambe le versioni e poi modifica il codice per osservare la differenza di sicurezza che offre ciascun linguaggio.
- Prova input non validi e valori ai limiti.
- Compila con i flag -Wall -Wextra -Wpedantic per attivare più avvisi.
- Sposta le dichiarazioni condivise in un file header e l'implementazione in un altro file.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
- Massimo dell'Array Trova il valore più grande in una lista. Facile
- Count Positive Numbers Count the values greater than zero in a list. Facile