Trovare il massimo e il minimo di un'array in C
In questo esercizio cerchiamo di trovare il valore massimo e minimo di un dato array contenente 10 valori.
Per poter determinare il valore massimo e minimo dobbiamo avere due variabili max e min che contengono rispettivamente il valore più grande e più piccolo attualmente trovati. Per fare ciò, dobbiamo scorrere tutto l’array e confrontare i singoli valori contenuti con i valori delle variabili max e min, e se necessario aggiornarli.
La domanda che si pone è: che valore iniziale assegnamo alle variabili max e min?
Ad esempio, se definiamo inizialmente max=0 e il vettore contiene solamente valori negativi (es. -2, -5, -3, -7), allora il valore del massimo sarebbe sbagliato, perché per noi sarebbe ancora il numero 0, ma in realtà il massimo del vettore è -2.
Il miglior modo per gestire questa situazione è quello di assegnare un valore già contenuto nel vettore, in questo modo si evitano possibili errori.
Nel nostro caso assegniamo alle variabili max e min il valore contenuto nella prima posizione del vettore.
#include <stdio.h>
#define N 10
int main(){
int lista[N] = {2, -3, 4, -1, 0, 5, 9, 1, 7, 4};
int max, min;
max = lista[0];
min = lista[0];
for(int i = 0; i < N;i++){
if(lista[i] > max){
max = lista[i];
}
if(lista[i] < min){
min = lista[i];
}
}
printf("Il valore massimo dell'array è: %d\n", max);
printf("Il valore minimo dell'array è: %d\n", min);
return 0;
}
/* Output:
Il valore massimo dell'array è: 9
Il valore minimo dell'array è: -3
*/
Oltre che a cercare il valore del massimo e del minimo possiamo cercare anche la loro posizione all’interno dell’array. In questo caso teniamo l’indice della posizione del minimo e del massimo, e confrontiamo i valori che scorrono nell’array con il valore del vettore nella posizione dell’indice iMax e iMin, e se necessario aggiorniamo gli indici.
Dato che stiamo considerando degli indici, iMax e iMin possono avere inizialmente un valore di default, basta che sia compreso tra 0 e la dimensione dell’array-1, nel nostro caso tra 0 e N-1.
#include <stdio.h>
#define N 10
int main(){
int lista[N] = {2, -3, 4, -1, 0, 5, 9, 1, 7, 4};
int iMax, iMin;
iMax = 0;
iMin = 0;
for(int i = 0; i < N;i++){
if(lista[i] > lista[iMax]){
iMax=i;
}
if(lista[i] < lista[iMin]){
iMin=i;
}
}
printf("Il valore massimo dell'array è: %d e si trova nella posizione: %d\n", lista[iMax], iMax);
printf("Il valore minimo dell'array è: %d e si trova nella posizione: %d\n", lista[iMin], iMin);
return 0;
}
/* Output:
Il valore massimo dell'array è: 9 e si trova nella posizione: 6
Il valore minimo dell'array è: -3 e si trova nella posizione: 1
*/
Indice pagine di c
Indice cPagine aggiunte di recente
Indice pagine del linguaggio C: Funzioni, Stringhe, ArrayCome effettuare la radice quadrata con la funzione sqrt in CCome ottenere il valore assoluto con la funzione abs in CCome generare numeri casuali con la funzione rand in CCome generare numeri casuali tra due numeri in C