use std::io;
fn main() {
println!("Bienvenue dans le calculateur de moyenne.");
println!("Entrez une série de nombres (ou tapez 'fin' pour terminer) :");
let mut nombres = Vec::new(); // Stocke les nombres saisis par l'utilisateur
loop {
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.expect("Erreur lors de la lecture.");
let input = input.trim();
if input.eq_ignore_ascii_case("fin") {
break; // Sortir de la boucle si l'utilisateur tape "fin"
}
match input.parse::<f64>() {
Ok(nombre) => nombres.push(nombre),
Err(_) => println!("Veuillez entrer un nombre valide ou tapez 'fin' pour terminer."),
}
}
if nombres.is_empty() {
println!("Aucun nombre n'a été entré. Impossible de calculer la moyenne.");
} else {
let somme: f64 = nombres.iter().sum();
let moyenne = somme / nombres.len() as f64;
println!("Vous avez entré : {:?}", nombres);
println!("La moyenne est : {:.2}", moyenne);
}
}
Collecte des nombres
Une boucle infinie (loop) permet de collecter les entrées utilisateur jusqu'à ce que "fin" soit saisi.
Chaque entrée valide est ajoutée au vecteur nombres.
Validation des entrées
La méthode parse::<f64>() convertit une entrée texte en nombre flottant. Si la conversion échoue, un message d’erreur est affiché.
Calcul de la moyenne
La méthode iter().sum() calcule la somme de tous les éléments du vecteur.
La moyenne est calculée en divisant cette somme par le nombre d'éléments dans le vecteur.
Gestion des cas particuliers
Si aucun nombre n’a été saisi, le programme affiche un message indiquant qu’il ne peut pas calculer la moyenne.
Affichage
Les nombres saisis sont affichés dans une liste, et la moyenne est affichée avec une précision de deux décimales.
Mode interactif avec détection automatique : Permettez à l'utilisateur d'entrer plusieurs nombres séparés par des espaces en une seule fois, puis séparez et analysez chaque nombre.
Précision personnalisable : Ajoutez une option pour choisir le nombre de décimales dans la moyenne.
Extensions mathématiques : Calculez également la médiane et l’écart-type des nombres saisis.
Gestion des très grands vecteurs : Gérez des collections très larges et optimisez la mémoire si nécessaire.