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

Banner Pubblicitario

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:

Banner pubblicitario
#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++

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