IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[débutant Perl] Calcul moyenne


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [débutant Perl] Calcul moyenne
    Bonjour,

    Je suis débutant sur Perl et j'ai un problème dans mon premier programme pour le calcul d'une moyenne.
    Je laisse l'utilisateur saisir ses notes et je lui affiche le résultat ainsi que le nombre de notes mais je n'avais pas vu un problème sur la note 0...

    Elle est équivalente à undef et stoppe ma boucle....

    Merci de me dire quelle solution vous préconisez pour cela et votre avis sur ma façon de coder... Toute critique à mon niveau est la bienvenue!!


    Merci d'avance

    BW


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    #!/usr/bin/perl
     
    # calcul de la moyenne
     
     
    #variables
     
    my @tabNote;
    my $longueurTab=0;
    my $note=-1;
     
    #Demande en boucle la saisie de notes
    #
    sub calculSomme
    {
    	my $totalFonction="0";
    	foreach my $note ( @_ )
    	{
    		$totalFonction+=$note;
    	}
    	$totalFonction;
    }
     
    while ($note != undef)
    {
    	print "Saisissez une note (touche entrée pour quittez): ";
    	$note=<STDIN>;
    	push @tabNote, $note if ($note!="")
    }
     
    $longueurTab=@tabNote;
    my $totalNote=&calculSomme(@tabNote);
    if ( $totalNote !=0)
    {
    	print "\nvous avez saisi $longueurTab notes\n";
    	print "La moyenne est de ".$totalNote/$longueurTab." !!!\n\n";
    }
    else 
    {
    	print "vous n'avez pas saisi de note";
    }

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    A mon avis le problème vient du découpage de tes fonctions: une pratique recommandée est la "separation of concern", c'est-à-dire une fonction par action que tu souhaites mener:

    En l'occurrence, dans la boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($note != undef)
    {
    	print "Saisissez une note (touche entrée pour quittez): ";
    	$note=<STDIN>;
    	push @tabNote, $note if ($note!="")
    }
    tu fais au moins trois choses différentes:
    - interagir avec l'utilisateur
    - valider les saisies
    - alimenter @tabNote.

    Pourquoi ne pas faire plutôt une fonction pour chacune de ces tâches?
    1) la boucle d'interaction: while true { print "blabla"; note =stdin; if isValid(note) then push it in noteTab else exit;} // noteTab comme tableau de chaînes de caractères
    2) isValid(saisie): là tu as le choix mais je te conseille de jeter un oeil aux expressions régulières, comme ça tu peux prendre en charge les différents séparateurs de décimale et de façon générale t'écarter de la conversion par défaut des strings en float
    3) une fonction pour convertir ta chaîne de caractère en nombre décimal, que tu appliques à noteTab pour avoir floatNoteTab.

    Voilà mon conseil!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Merci stendhal666 je vais essayer de mettre cela en forme!!!

    Merci pour les conseils

    @+

Discussions similaires

  1. Calcul moyenne des notes en perl
    Par Contreras dans le forum Langage
    Réponses: 1
    Dernier message: 22/11/2011, 14h00
  2. [Débutant] Bibliothèques calculs statistiques
    Par james-mi dans le forum Ruby
    Réponses: 3
    Dernier message: 02/02/2007, 01h32
  3. Réponses: 3
    Dernier message: 30/08/2006, 21h30
  4. Réponses: 35
    Dernier message: 10/05/2006, 01h11
  5. débutant perl: petit script à réaliser
    Par KymZen dans le forum Langage
    Réponses: 3
    Dernier message: 13/04/2006, 20h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo