#include <iostream>
#include <string>
#include <vector>
- iostream: Fornisce le funzionalità di input/output di base, come
cin
ecout
. - string: Definisce la classe
string
per manipolare sequenze di caratteri. - vector: Definisce il template
vector
per gestire contenitori dinamici di elementi.
int main() {
- int main(): Punto di ingresso del programma.
std::string a;
int somma = 0;
std::vector<std::string> valori;
- std::string a: Variabile di tipo stringa utilizzata per memorizzare temporaneamente l'input dell'utente.
- int somma: Variabile intera inizializzata a 0 per accumulare la somma delle lunghezze delle stringhe.
- std::vectorstd::string valori: Vettore di stringhe utilizzato per memorizzare tutte le stringhe inserite dall'utente.
do {
std::cout << "Inserisci una stringa: ";
std::getline(std::cin,a);
valori.push_back(a);
} while (a != "exit");
- do: Inizia il ciclo.
- std::cout << "Inserisci una stringa: ";: Stampa un prompt per chiedere all'utente di inserire una stringa.
- std::getline(std::cin,a);: Legge una riga completa da
cin
(input standard) e la memorizza nella variabilea
. - valori.push_back(a);: Aggiunge la stringa appena letta alla fine del vettore
valori
.
- while (a != "exit");: Continua il ciclo finché la stringa inserita non è uguale a "exit".
for (int i = 0; i < valori.size() - 1; i++) {
std::cout << valori[i] << " " << valori[i].length() << std::endl;
somma = somma + valori[i].length();
}
- for (int i = 0; i < valori.size() - 1; i++): Iterazione su tutti gli elementi del vettore
valori
(escluso l'ultimo, che è "exit").- std::cout << valori[i] << " " << valori[i].length() << std::endl;: Stampa la stringa corrente e la sua lunghezza.
- somma = somma + valori[i].length();: Aggiunge la lunghezza della stringa corrente alla variabile
somma
.
std::cout << static_cast<float>(somma)/(valori.size() - 1) << std::endl;
- static_cast(somma): Converte il valore intero di
somma
in un valore a virgola mobile (float) per ottenere una divisione con precisione floating-point. - (valori.size() - 1): Calcola il numero di stringhe valide (escludendo "exit").
- std::cout << ... << std::endl;: Stampa la media delle lunghezze delle stringhe.
return 0;
}
- return 0: Indica che il programma è terminato correttamente.
In sintesi: Il codice legge una serie di stringhe inserite dall'utente fino a quando non viene inserita la parola "exit". Quindi, calcola la lunghezza media di tutte le stringhe inserite (esclusa "exit") e stampa il risultato.
Note:
- Il ciclo
for
itera fino avalori.size() - 1
per evitare di includere la stringa "exit" nel calcolo della media. - Il
static_cast
è necessario per eseguire una divisione in virgola mobile e ottenere un risultato preciso. - Il vettore
valori
viene utilizzato per memorizzare tutte le stringhe inserite, anche se solo le lunghezze vengono utilizzate per il calcolo della media.
Possibili miglioramenti:
- Validazione dell'input: Si potrebbe aggiungere una verifica per assicurarsi che l'utente inserisca effettivamente delle stringhe e non solo spazi vuoti.
- Gestione di errori: Si potrebbe gestire l'eventualità che l'utente non inserisca alcuna stringa prima di scrivere "exit".
- Funzionalità aggiuntive: Si potrebbero aggiungere altre funzionalità, come il calcolo della lunghezza massima e minima delle stringhe, o la ricerca di determinate parole all'interno delle stringhe.