Algo liste de nombre afficher les 3 plus gran

Résolu/Fermé
Signaler
-
Messages postés
367
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2013
-
Bonjour à toutes et tous !!!

Voilà je me suis poser une colle et je n'arrive pas à la résoudre... Je suis en train de faire une base de donnée access qui concerne la gestion d'un tournois.

J'ai une liste de points que je récupères. Disons: 17; 14; 18; 5; 4; 20;...
Et je voudrais récupérer les 3 meilleurs score. Pour le premier score je vois bien mais c'est pour les 2 autres...

max := 0

Si point > max alors
max = point
finsi


Merci d'avance de votre aide !!

7 réponses

Messages postés
367
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2013
27
Bonsoir Alexbigfoug,

Voici quelque chose qui peut t'aider :

  ALGO les3MeilleursScores :
  DEBUT
    highScore=-1
    midScore=-1
    worstScore=-1
    POUR i ALLANT de 1 A NBMAXSCORES DANS tab FAIRE
      SI tab[i]>= highScore
        ALORS  highScore = tab[i]
        SINON
          SI tab[i]>= midScore
            ALORS  midScore = tab[i]
            SINON
              SI tab[i]>= worstScore
                ALORS  worstScore = tab[i]
                SINON
          FINSI
      FINSI
    FINPOUR
  FIN


Je sais qu'il y un bug. Je te laisse le découvrir. Tiens moi au courant ;-)

@+
Bonsoir et merci de ton coup de pouce !!

Je ne suis pas sûr mais ce que tu utilise c'est des tableaux, non???

Je n'es pas de connaisance sur les tableau...
Messages postés
367
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2013
27
Mon algo. s"appuie effectivement sur un tableau de scores.

Si tu n'as pas appris les tableaux, quelle(s) structure(s) représentant un ensemble d'éléments veux-tu utiliser ?
J'ai pas le code là, mais je vais faire un truc équivalent

Entrer (score)

Tant que score <> -1 faire // -1 est utilisé pour finir le saisie (c'est à dire que tout les score on été entré.

//algo pour récupérer les 3 meilleurs scores

Entrer (score)
Refaire

Voilà je sais pas trop si j'ai répondus à ta question...

En faite, la difficulté c'est que je ne garde pas en mémoire les scores précédents mais je les obtients 1 par
Messages postés
367
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2013
27
Non, tu n'as pas répondu à ma question. Mais ce n'est pas grave : je vais reformuler ma question.

Dans ton 1ier post, tu parles d'une liste de points que tu récupères :
cela veut dire pour moi que tu as appris (ou tu veux utiliser) une structure de données qui permet de mémoriser un ensemble (de taille indéfinie) de valeurs.
Pour t'aider, en algo, ce type de données correspond :
- aux tableaux
- aux listes
- aux piles

Mais tant que l'on est au niveau de l'algo, on peut très bien dire que :
chaque score donné par l'utilisateur est mémorisée dans une variable.

Ce qui donnerait donc (en algo) :

  ALGO les3MeilleursScores :
  DEBUT

    // Affectaation de toutes les variables avec les scores données
    i=0
    REPETER
      i=i+1
      score_i = ECRIRE("Donnez votre score : ");
    JUSQU'A score_i=-1

    // Recherche des 3 meilleurs scores
    highScore=-1
    midScore=-1
    worstScore=-1
    POUR j ALLANT de 1 A i FAIRE
      SI score_j >= highScore
        ALORS  highScore = score_j
        SINON
          SI score_j >= midScore
            ALORS  midScore = score_j
            SINON
              SI score_j >= worstScore
                ALORS  worstScore = score_j
              FINSI
          FINSI
      FINSI
    FINPOUR
  FIN


Qu'en penses-tu à présent ?
Ouaip, voilà maintenant je vois ou j'ai mon erreur^^

MOn code était similaire au tient, sauf que au lieu de faire des SI, SINON j'ai fait des SI imbriqué^^erreur d'inattention ^^

Merci beaucoup !!!
Messages postés
367
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2013
27
Je t'en prie.
@+ peut-être.