Exemple de solution

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);
    }
}

Explication du code

  1. Collecte des nombres

  2. Validation des entrées

  3. Calcul de la moyenne

  4. Gestion des cas particuliers

  5. Affichage

Améliorations possibles

  1. 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.

  2. Précision personnalisable : Ajoutez une option pour choisir le nombre de décimales dans la moyenne.

  3. Extensions mathématiques : Calculez également la médiane et l’écart-type des nombres saisis.

  4. Gestion des très grands vecteurs : Gérez des collections très larges et optimisez la mémoire si nécessaire.