[SOL] Esercizio n. 17 Array (17_array)


Spiegazione del Programma: Ricerca del Massimo in un Array

Questo programma in C++ trova il numero più grande (massimo) in una lista di numeri inseriti dall'utente e ne indica anche la posizione.

Come funziona il programma

1. Inclusione delle librerie e dichiarazioni iniziali

#include <iostream>
using namespace std;
  • Include la libreria per input/output
  • Permette di usare cout e cin senza scrivere std::

2. Richiesta del numero di elementi

int n;
cout << "Quanti numeri? ";
cin >> n;

Il programma chiede all'utente quanti numeri vuole inserire e salva questa informazione nella variabile n.

3. Dichiarazione dell'array

double v[100];

Viene creato un array (vettore) chiamato v che può contenere fino a 100 numeri decimali.

4. Inserimento dei numeri

for (int i = 0; i < n; i++) {
    cout << "Numero " << i + 1 << ": ";
    cin >> v[i];
}

Un ciclo for chiede all'utente di inserire n numeri uno alla volta:

  • i parte da 0 e arriva fino a n-1
  • Ogni numero viene salvato nella posizione v[i] dell'array
  • Viene mostrato "Numero 1:", "Numero 2:", ecc. (usando i + 1 per rendere più chiaro all'utente)

5. Ricerca del massimo

double max = v[0];
int pos = 0;

for (int i = 1; i < n; i++) {
    if (v[i] > max) {
        max = v[i];
        pos = i;
    }
}

Strategia utilizzata:

  • Si assume che il primo numero (v[0]) sia il massimo iniziale
  • Si memorizza anche la sua posizione (pos = 0)
  • Si confronta ogni numero successivo con il massimo attuale
  • Se si trova un numero più grande, si aggiornano sia max che pos

6. Visualizzazione del risultato

cout << "Massimo = " << max << endl;
cout << "Posizione = " << pos + 1 << endl;

Il programma mostra:

  • Il valore del numero massimo trovato
  • La sua posizione (aggiungendo 1 perché l'utente conta da 1, non da 0)

Esempio di esecuzione

Se l'utente inserisce: 5, 2.5, 8.1, 3.7, 1.2

  • Massimo = 8.1
  • Posizione = 3 (è il terzo numero inserito)

Punti importanti da ricordare

  • L'array ha dimensione fissa (100 elementi massimo)
  • Le posizioni nell'array partono da 0, ma vengono mostrate all'utente partendo da 1
  • Il programma funziona sia con numeri interi che decimali
  • Se ci sono più numeri uguali al massimo, viene restituita la posizione del primo trovato

#include <iostream>
using namespace std;

int main() {
    int n;
    cout << "Quanti numeri? ";
    cin >> n;

    double v[100];

    for (int i = 0; i < n; i++) {
        cout << "Numero " << i + 1 << ": ";
        cin >> v[i];
    }

    double max = v[0];
    int pos = 0;

    for (int i = 1; i < n; i++) {
        if (v[i] > max) {
            max = v[i];
            pos = i;
        }
    }

    cout << "Massimo = " << max << endl;
    cout << "Posizione = " << pos + 1 << endl;

    return 0;
}