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

Algorithmes et structures de données Discussion :

Afficher la moyenne des multiple de 3 et la moyenne des nombres pairs, à partir des nb entrés


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Afficher la moyenne des multiple de 3 et la moyenne des nombres pairs, à partir des nb entrés
    Voici la consigne de mon formateur :
    "Ecrire un algorithme qui affiche la moyenne des nombres pairs et la moyenne des multiples de 3 d'un tableau d'entiers initialisés par des nombres entrés au clavier par l'utilisateur.
    L'utilisateur entrera un maximum de 15 nombres et signifiera la fin de ses entrées en tapant -1 au clavier.
    0 n'est pas considéré comme un nombre pair ou un multiple de 3."

    Voici notre code
    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
    // initialisation des variables indice j, longeur effective, le nombre lu...
    tableau tab[15] :entier
    var j, lgEff, nbLu, multiple2, multiple3, cptMultiple2, cptMultiple3
    
    lgEff <- 0
    multiple2 <- 0
    multiple3 <- 0
    cptMultiple2 <- 0
    cptMultiple3 <- 0
    
    lire nbLu
    TANT QUE nbLu <> -1 FAIRE    // -1 signifiera la fin de ses entrées
    	lgEff <- lgEff + 1
    	tab[j] <- nbLu
    		SI tab[j] <> 0 ALORS //0 n'est pas considéré comme un nombre pair ou un multiple de 3.
    			
    			SI tab[j] mod2 = 0 ALORS   // si nbLu est un nb pair
    				multiple2 <- multiple2 + 1
    				cptMultiple2 <- cptMultiple2 + 1
    			FSI
    
    			SI tab[j] mod3 = 0 ALORS   // si nbLu est un multiple de 3
    				multiple3 <- multiple3 + 1
    				cptMultiple3 <- cptMultiple3 + 1
    			FSI
    		FSI
    	j <- j + 1
    FTANT
    
    SI cptMultiple2 = 0 ALORS
              ecrire 'pas de nombre pair'
    SINON
              ecrire multiple2/cptMultiple2  //affiche la moyenne des nombres pairs
    FSI
    
    SI cptMultiple3 = 0 ALORS
              ecrire 'pas de nombre multiple de 3'
    SINON
              ecrire multiple3/cptMultiple3  //affiche la moyenne des multiples de 3
    FSI

    Avez-vous des avis sur la construction de cet algorithme svp ? J'ai effetué cet algo avec des collègues et nous nous demandons s'il y aurait moyen de l'améliorer... On débute en algo et nous ne devons pas encore programmer en C pour le moment.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    "Lire" n'est pas dans une boucle. Dès lors, le code affiché ne répondra pas à la question puisqu'un seul nombre sera lu.

  3. #3
    Invité
    Invité(e)
    Par défaut
    "Lire" n'est pas dans une boucle. Dès lors, le code affiché ne répondra pas à la question puisqu'un seul nombre sera lu.[/QUOTE]


    Merci beaucoup pour cette remarque pertinente. J'imagine que la ligne ' lire nbLu ' devrait se situer entre les lignes 27 et 28 (entre j <- j + 1 et FTANT ). J'y réfléchirai et je reviens sur ce forum dès que possible.
    Dernière modification par dourouc05 ; 24/10/2022 à 03h02. Motif: Inutile de citer l'intégralité du message

  4. #4
    Membre expérimenté Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 325
    Par défaut
    Bonjour,
    Pour alimenter tes réflexions, tu as plusieurs solutions :

    - relire un nouveau nombre avant de reboucler,
    - décaler ta lecture tout de suite après le début de ta boucle mais il faudra penser à ce que ta boucle soit bien traitée la première fois et gérer la réponse -1 à la première question.
    - ne faire le test de rebouclage qu'à la fin

    A toi de jauger la meilleure solution.

    Tu dois aussi penser à limiter le nombre d'entrées...

    Autre chose, essaies de séparer l'entrée de tes données de leur traitement, ce sera plus facile à écrire, à lire, à debugguer mais aussi à améliorer
    - Entrée des données : Dialogue avec l'utilisateur
    - Traitement des données et calcul des résultats
    - Affichage des résultats. Dialogue avec l'utilisateur.
    Beaucoup de traitement sont gérés de cette manière : Données => Traitement => Résultats...

    Belle journée,

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 215
    Par défaut
    Autre point, tu as ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    multiple2 <- multiple2 + 1
    cptMultiple2 <- cptMultiple2 + 1
    Et à la fin, tu divises multiple2 par cptmultiple2 ; ok.
    Mais je pense que tu as fait un copier/coller, et que tu as oublié de changer un petit truc.

  6. #6
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 627
    Par défaut
    Bonjour

    Comme signalé par tbc92, idem pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          multiple3 <- multiple3 + 1
          cptMultiple3 <- cptMultiple3 + 1
    D'où l'intérêt de bien nommer les variables : peut être sumMultiple2 et sumMultiple3 au lieu de multiple2 et multiple3.

    Salutations

Discussions similaires

  1. Afficher une moyenne de nombre entier avec 2 décimales
    Par samos99 dans le forum Power BI
    Réponses: 5
    Dernier message: 30/05/2021, 22h17
  2. Réponses: 2
    Dernier message: 14/09/2016, 21h17
  3. Script shell : afficher le contenu des variables entre simple quote
    Par mualki dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 23/01/2010, 00h14
  4. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19

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