
Massimo elemento di un vettore
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++