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 :

Calculer des moyennes pour chaque groupe


Sujet :

Algorithmes et structures de données

  1. #21
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Stéphanois57 Voir le message
    Si le problème est réglé, pourriez-vous maintenant me guider sur les "2 ou 3 détails à corriger" ?
    Regarde l'emplacement de ton affichage de la moyenne, son initialisation, et les variables i,j,k...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  2. #22
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    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 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Il y a un principe déjà vu : Quand on tape POUR .... , on tape immédiatement le FIN_POUR associé quelques lignes plus bas, avec éventuellement un commentaire pour qu'on voie bien que ce FIN_POUR correspond à tel ou tel POUR.

    Il y a une autre habitude à prendre qui permet d'éviter des erreurs :
    Quand on a une instruction de type 'Remise à zéro' ( ici somme_note := 0 ), on a ensuite un traitement qui calcule somme_note, et en principe, au même niveau , on doit avoir une instruction ou un traitement qui va afficher le résultat, ou écrire le résultat dans un fichier.
    En d'autres mots, le programme doit passer autant de fois par l'instruction somme_note :=0 qu'il passe par l'instruction afficher somme_note.

    Encore une autre formulation de la même idée : tu pourrais avoir une version 'High Level' de ton algorithme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Pour chaque groupe
        Initialisation des variables communes à ce groupe (Nombre d'étudiants)
        Pour chaque Etudiant
             Initialisation des variables globales pour cet étudiant ( Nombre de notes, note_moyenne)
             Calcul de la note moyenne  ... étape qui va être plus détaillée dans la version suivante.
             Affichage de la note moyenne
        Etudiant Suivant
    Groupe suivant
    Puis la version détaillée... celle que tu as faite, qu'il faut donc corriger.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #23
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    tbc92, tu me dis que l'initialisation de "somme" doit passer autant de fois que le "somme <-- somme + note", ça veut dire que je dois les mettre dans la même boucle pour ?
    Si je fais comme ceci, à chaque passage dans "Pour j de 1 à NbDeNote faire", la variable somme va reprendre la valeur 0, et j'aurai jamais mon incrémentation des valeurs de note.
    Concernant l'affichage de la moyenne, il faut donc que je la remonte dans le programme ?

    Décidément, je ne vois pas où tu veux en venir avec les Pour…Fin Pour, car chaque Pour est accompagné plus bas d'un Fin Pour dans le programme, le Fin Pour étant aligné avec le Pour …

  4. #24
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    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 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Je ne dis pas cela.

    je dis :

    Selon le nombre de groupes et le nombre d'étudiants, on sait combien de fois on va devoir afficher le résultat ; 'Votre Note Moyenne est de '...
    Disons 50 fois pour l'exemple.
    Alors on doit avoir aussi 50 fois l'instruction de R.A.Z (Remise à Zéro) de Somme_Note
    L'instruction de R.A.Z et l'instruction d'affichage s'exécutent autant de fois.

    On peut s'arrêter là... mais on peut aussi ajouter (au risque de créer de la confusion)
    :
    Et on doit avoir aussi 50 fois un traitement qui calcule la somme moyenne ... Sachant que dans chacun de ces 50 traitements, on va avoir une boucle, et plusieurs fois l'instruction somme <-- somme + note.

    Regarde l'exemple d'algorithme très court que j'avais donné. Je pense qu'il est très clair. A condition de voir que la ligne 'Calcul de la somme moyenne' correspond à un traitement éventuellement complexe, et ici, il correspond à une boucle, et donc à 5 ou 6 lignes dans un algorithme plus détaillé..


    Et cette logique est très fréquente. On a souvent des traitements du type : Faire une boucle ou des boucles imbriquées, et au coeur de cette boucle, faire un R.A.Z., un traitement (plus ou moins complexe), et un affichage.




    Dernier point, l'indentation : Dans mon exemple, le P de Pour Chaque Etudiant est aligné avec le I de la ligne du dessus... Il me semble que c'est la norme. En tout cas, j'ai toujours vu cela, et du coup, ça me paraît beaucoup plus facile à lire.
    Mais je ne suis pas du tout une référence en matière de norme !
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #25
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Je vais faire quelque chose mais je ne pense pas que ce soit ça que tu attends. Désolé de mon incompréhension…

    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
     
    Algorithme : MoyenneAlgo
    Variables saisies : NbGroupe, NbEtu, NbDeNote : Entiers ; note : réel
    Variables affichées : i, k : entiers
    Variables intermédiaires : i, j, k : entiers ; somme : réel
     
    Début
     
      Afficher("Saisir le nombre de groupe")
      Saisir(NbGroupe)
      Pour i de 1 à NbGroupe faire
         Afficher ("Saisir le nombre d'étudiant dans le groupe", i)
         Saisir (NbEtu)
         Pour k de 1 à NbEtu faire
              Afficher ("saisir le nombre de note dans ce groupe")
              Saisir (NbdeNote)
              Somme <-- 0
              Pour j de 1 à NbDeNote faire
                     Afficher("saisir la note numéro ", j)
                     Saisir (note)
                     Somme <-- Somme + note
              Fpour // fin boucle "pour NbDeNote"
              Afficher ("la moyenne de l'élève", k, "du groupe", i, "est", Somme/NbDeNote)
         Fpour // Fin boucle "pour NbEtu"
      Fpour // Fin boucle "pour NbGroupe"
     
    Fin

  6. #26
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    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 057
    Points : 9 396
    Points
    9 396
    Par défaut
    C'est exactement ce que j'attendais.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #27
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Ca fait à peine un mois que je travaille sur des algorithmes, avant j'avais jamais touché à ça, donc pour être franc, je ne savais pas qu'on pouvait faire comme ça, je pensais que les Fin_Pour devaient être à la suite, sans rien y intercaler entre eux.

    Et maintenant ça me paraît assez logique, car on veut effectivement afficher "k fois" la moyenne des k étudiants respectifs, et non pas une seule fois, comme c'était le cas quand ma ligne d'affichage se trouvait à la fin du programme.

    Le programme, tel qu'il est là, il est fonctionnel donc ?

    Bon, cependant je crois ne pas avoir répondu à :
    On peut s'arrêter là... mais on peut aussi ajouter (au risque de créer de la confusion)
    :
    Et on doit avoir aussi 50 fois un traitement qui calcule la somme moyenne ... Sachant que dans chacun de ces 50 traitements, on va avoir une boucle, et plusieurs fois l'instruction somme <-- somme + note.
    Ca c'est le trouble total pour moi, je ne vois absolument pas ce que tu tentes de me dire, mais j'ai envie de savoir (même si d'après ce que tu m'as dit, ça ne servirait qu'à bonifier mon code) car c'est à force de manipuler et de me creuser le crâne que j'arriverai faire les choses.

  8. #28
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    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 057
    Points : 9 396
    Points
    9 396
    Par défaut
    .. si cette phrase sème le trouble .. oublie là.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  9. #29
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Non j'ai envie de savoir, mais je ne comprends pas pourquoi tu me dis que je dois avoir "k fois" le traitement qui calcule somme <-- somme + note ? Car j'ai l'impression que c'est déjà ce que mon programme fait du fait que la boucle avec "j" est imbriquée dans celle avec "k"…

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/04/2014, 21h47
  2. [AC-2007] Calcul sur une date et obtenir des valeurs pour chaque date obtenue
    Par missalias dans le forum Modélisation
    Réponses: 38
    Dernier message: 07/04/2014, 09h22
  3. Réponses: 3
    Dernier message: 16/07/2013, 15h07
  4. calculer des moyennes pour des sous groupes
    Par madib dans le forum SAS Base
    Réponses: 3
    Dernier message: 04/02/2009, 16h50
  5. [Sessions] Comment creer des sessions pour chaque visiteur
    Par developower dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2005, 12h55

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