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;
#define N 10
int main() {
int i, max, p;
int a[N];
// Input dei numeri nell'array
for (i = 0; i < N; i++) {
cout << "Inserisci un numero: ";
cin >> a[i];
}
// Troviamo il massimo e il suo indice
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;
}
}
// Output del massimo e del suo indice
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;
#define N 10
int main() {
int i, max, p, c;
int a[N];
// Input dei numeri nell'array
for (i = 0; i < N; i++) {
cout << "Inserisci un numero: ";
cin >> a[i];
}
// Troviamo il massimo, il suo indice e quante volte ricorre
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++;
}
}
// Output del massimo, del suo indice e di quante volte ricorre
cout << "Massimo, indice " << p << ", valore " << max << ", ricorre " << c << " volte" << 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++