
Realizziamo alcuni esempi su come trovare il massimo elemento di un vettore.
Troviamo il massimo elemento di un vettore ed il suo indice
Innanzitutto dichiariamo le variabili necessarie:
N – indica il numero di elementi
i – contatore del ciclo for
max – per conservare il valore massimo
p – indica la posizione del valore massimo
Dopo chiediamo di inserire il numero di elementi, cioè N e controlliamo che sia un valore maggiore di zero con un ciclo do while.
Dichiariamo dunque un array a di N elementi e con un ciclo for inseriamo i valori nell’array.
Quindi poniamo il massimo uguale al primo elemento dell’array e l’indice uguale a 0.
Poi, controlliamo se ciascun elemento è maggiore del valore massimo. Se tale condizione è verificata allora aggiorniamo il valore del massimo e dell’indice.
N.B. Non è corretto indicare max=0 in quanto, nell’ipotesi in cui, si inseriscano tutti i numeri negativi si avrebbe come valore massimo 0.
Es:
max=0 N=4 a[N]={-2,-3,-4,-5}
…. //calcolo il massimo
Il valore massimo dovrebbe essere -2 ma l’algoritmo restituisce erroneamente zero.
Infine visualizziamo in output i valori ottenuti.
Ecco quindi l’algoritmo completo:
#include<iostream>
using namespace std;
int main () {
int i, N, max, p;
do{
cout<<"Inserisci N: ";
cin>>N;
}while(N<=0);
int a[N];
for (i=0; i<N; i++) {
cout<<"Inserisci un numero: ";
cin>>a[i];
}
//troviamo il massimo
max=a[0]; //poniamo il massimo uguale al primo elemento
p=0; //poniamo l'indice uguale a 0
for (i=0; i<N; i++) {
if(a[i]>max){
max=a[i];
p=i;
}
}
cout<<"Massimo, indice "<<p<< ", valore "<<max<<endl;
return 0;
}
Troviamo il maggiore e quante volte ricorre
Per realizzare questo algoritmo basta semplicemente aggiungere una variabile c che conta quante volte compare il valore massimo.
La faremo incrementare di 1 se trova lo stesso valore, mentre la inizializziamo a zero se trova un nuovo massimo.
Ecco quindi il codice completo:
#include<iostream>
using namespace std;
int main () {
int i, N, max,p,c;
do{
cout<<"Inserisci N: ";
cin>>N;
}while(N<=0);
int a[N];
for (i=0; i<N; i++) {
cout<<"Inserisci un numero: ";
cin>>a[i];
}
//troviamo il massimo
max=a[0]; //poniamo il massimo uguale al primo elemento
p=0;
c=1;
for (i=0; i<N; i++) {
if(a[i]>max){
max=a[i];
p=i;
c=1;
}
else if (a[i]==max) {
c++;
}
}
cout<<"Massimo, indice "<<p<< ", valore "<<max<<", ricorre "<<c<<endl;
return 0;
}
Abbiamo realizzato alcuni semplici esempi per trovare il massimo elemento di un vettore, nelle prossime lezioni ci eserciteremo ancora sui vettori.
Alcuni link utili
Indice argomenti linguaggio C++
Approfondimento vettori in C++
Esercitazione sugli array in C++
Successione di Fibonacci in C++