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++

Array o vettori in C++

Approfondimento vettori in C++

Esercitazione sugli array in C++

Esercizi con gli array

Ricerca sequenziale in C++

Ricerca in un array ordinato

Array con numeri random

Ricerca binaria

Successione di Fibonacci in C++