FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
algorithme de classement Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
algorithme de classement Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
algorithme de classement Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
algorithme de classement Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
algorithme de classement Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
algorithme de classement Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
algorithme de classement Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
algorithme de classement Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
algorithme de classement Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
algorithme de classement Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
algorithme de classement Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
algorithme de classement Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
algorithme de classement Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
algorithme de classement Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
algorithme de classement Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-38%
Le deal à ne pas rater :
Ecran PC gaming 23,8″ – ACER KG241Y P3bip à 99,99€
99.99 € 159.99 €
Voir le deal

 

 algorithme de classement

Aller en bas 
4 participants
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

algorithme de classement Empty
MessageSujet: algorithme de classement   algorithme de classement EmptyMer 15 Mai 2013 - 21:16

Bonsoir à tous,

Comme je suis pas très bon en math, j'ai besoin de vous.

Voilà le sujet:

soit de 3 à 6 joueurs qui ont acquis des points au cours d'une partie (peu importe à quel jeu)
2 d'entre eux ont acquis le même nombre de points. Je souhaite déterminer qui est premier, deuxième, troisième, etc...
les joueurs sont identifiés dans un tableau Joueur$(n%), leur score par Score%(n%) et leur classement par Class%(n%).

Je souhaite une procédure du style Calcul_Classement(Nb_joueur%) qui retourne le classement de chaque joueur et qui tient compte des joueurs qui arrivent à la même place. (EX: toto=1 paul et jacques=2 pierre=4)

A VOS CLAVIER !


Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptyMer 15 Mai 2013 - 21:35

Grace à JL35 (sur un autre poste) j'ai trouvé un début de piste écrite en QB64.

Code:
place = 11
' calcul de la place
FOR i = 1 TO 10
IF score > score(i) THEN
IF i < place THEN place = i
END IF
NEXT i
' repartition des 10 scores
IF place = 10 THEN score(place) = score
IF place < 10 THEN
FOR i = 10 TO place STEP -1
score(i) = score(i - 1)
NEXT i
score(place) = score
END IF

Je n'ai pas encore testé.

A+
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptyMer 15 Mai 2013 - 23:36

Bonsoir à tous, Very Happy bonsoir à Jean-Claude, Very Happy
Est-ce que ce petit bout de code répond à ta question?
Code:
dim score(10),place,flag,i
score(0)=0
score(1)=200:score(2)=150:score(3)=120:score(4)=110:score(5)=100
score(6)=090:score(7)=080:score(8)=080:score(9)=070:score(10)=050

sc()

place = 110
message "votre score :"+str$(place)+" points"

FOR i = 1 TO 10
IF place > score(i) then flag=score(i):score(i)=place:place=flag
NEXT i

message "nouveau classement:"
sc()
end

sub sc()
for i=1 to 10
if score(i-1)=score(i)
  print i-1;" - ";score(i);" points"
else
  print i;" - ";score(i);" points"
end_if
next i
print
end_sub
Pour les noms des joueurs je te laisse faire, vue que tu as déjà le classement, il suffit d'ajouter la variable nom_joueur$(i) et le tour est joué si je puis dire... Laughing
A+ Wink Wink Wink
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

algorithme de classement Empty
MessageSujet: re   algorithme de classement EmptyJeu 16 Mai 2013 - 2:00

Je vais m'abstenir même si je me suis creusé les neurones un moment.
Bignono a été plus rapide et surtout beaucoup plus court... Laughing

Edit :

GENIAL !!! ce code, Bignono .
Je garde !
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptyJeu 16 Mai 2013 - 4:50

Salut tout le monde.
Le code de Bignono est certes GENIAL pour citer Ygeronimi, mais je pense que ça ne répond pas à ce que Jean Claude attend.
Si j’ai bien compris, Jean Claude dispose de 3 tableaux contenant respectivement les noms des joueurs et leur score pour les 2 premiers tableaux et désire calculer leur classement dans le 3ème tableau.
Comme ces 3 trois tableaux sont indépendants l’un de l’autre, on doit d’abord trier le tableau des scores dans l’ordre décroissant et modifier en conséquence l’ordre dans le tableau des noms. Ainsi on obtient un classement selon le score : la relation entre ces 2 tableaux est l’ordre de leur indice.
Il nous faut ensuite déterminer le rang de chaque joueur à partir du tableau trié des scores en tenant compte de l’ex aequo.

Voici mon code :

Code:
' ******************************************************************************
'          POUR_JEAN_CLAUDE.BAS  PAR PAPYDALL
' ******************************************************************************

dim nb_joueur : nb_joueur = 9  : ' Nombre de joueurs
dim joueur$(nb_joueur)  : ' tableau contenant les noms des joueurs
dim score(nb_joueur)    : ' tableau contenant les scores des joueurs
dim class$(nb_joueur)  : ' tableau contenant les classements des joueurs
' --------------------
Init_joueur(nb_joueur)
Init_score(nb_joueur)
tri_bulle(nb_joueur)
classement(nb_joueur)
Affiche_resultat(nb_joueur)
' --------------------

end
' ******************************************************************************
' Remplissage du tableau des joueurs
SUB Init_joueur(n)
    dim_local i
    for i = 1 to n : read joueur$(i) : next i
' les noms des joueurs
    data "Jean Claude","JL35      ","Jicehel    ","Ygeronimi  ","JJN4      "
    data "Bignono    ","Cosmos70  ","Klaus      ","Papydall  "
END_SUB
' ******************************************************************************
' Remplissage du tableau des scores
SUB Init_Score(n)
    dim_local i
    for i = 1 to n : read score(i) : next i
' Les scores des joueurs
' toutes mes excuses pour ceux qui ont un score faible; c'est INVOLONTAIRE !
    data 19,15,18,15,15,12,11,18,11
END_SUB
' ******************************************************************************
' Tri des joueurs selon leur score
SUB Tri_bulle(n)
    dim_local i,permut,aux,aux$
    REPEat
       permut = 0
       for i = 1 to N-1
             if score(i) < score(i+1)
' permuter score(i) et score(i+1)
               aux = score(i) : score(i) = score(i+1) : score(i+1) = aux
' permuter joueur(i) et joueur(i+1)
               aux$ = joueur$(i) : joueur$(i) = joueur$(i+1) : joueur$(i+1) = aux$
              permut = 1
            end_if   
   next i
    until permut = 0
END_SUB
' ******************************************************************************
' Détermination du classement de chaque joueur en tenant comptes des ex aequo
SUB classement(n)
    dim_local i,r,s$,ex$
    r = 1  : ex$ = " ex aequo " : s$ = string$(10," ")
    for i = 1 to n -1
        class$(i) = str$(i) +s$
        if score(i) = score(i+1)
          r = i
          repeat
              class$(i) = str$(r) + ex$ : i = i + 1
              if i = nb_joueur then exit_for
          until score(i) <> score(i+1)
          class$(i) = str$(r) +ex$
        end_if
    next i
    if score (i) = score(i-1)
      class$(i) = class$(i-1)
    else
      class$(i) = str$(i)+s$
    end_if
END_SUB
' ******************************************************************************
' Affichage des joueurs avec classement et score
SUB Affiche_resultat(n)
    dim_local i
    for i = 1 to n
      print class$(i) ; " "; joueur$(i) ; "  ";score(i)
    next i
END_SUB
' ******************************************************************************

Que ceux qui sont cités dans le programme comme des joueurs m’excusent surtout s’ils trouvent que leur score est faible !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptyJeu 16 Mai 2013 - 7:27

Bravo à vous deux, c'est du rapide et de l’efficace... cheers

Je vais retenir celui de Bignono qui est simple et répond plus à mon besoin, car les joueurs de mon programme sont déjà identifiés et leur place est fixe car ils se trouvent dans un GRID. C'est un tableau de marquage.

Celui de Papydall à le mérite de faire le classement avec le nom des joueurs. C'est un "Podium" d'ordre d'arrivée.

En conclusion les 2 ont chacun leur utilité.

Je vous remercie, je viens de gagner beaucoup de temps. J'espère vous fournir le code complet de mon jeu prochainement.

Une mention à Papydall qui me place vainqueur dans son classement alors que je n'ai strictement rien fait.... lol!
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptyJeu 16 Mai 2013 - 9:17

Bonjour Jean-Claude, Very Happy
Je viens de m'apercevoir que mon code sur mon post précédent ne répondait pas tout à fait à ce que tu demandais. En effet, il y a un hic! Quand 3 ou 4 scores sont identiques, il ne sait pas les classer en ex aeco! Donc j'ai rectifié et refait un autre petit code avec les noms des joueurs, (tu remarqueras que tu es toujours en tête du classement Laughing Laughing Laughing ), qui doit savoir tenir compte du classement de plusieurs scores ex aeco!
Code:
dim score(10),nom$(10),joueur$,i_joueur$,place,flag,i
score(0)=0
score(1)=200:score(2)=150:score(3)=150:score(4)=150:score(5)=150
score(6)=090:score(7)=080:score(8)=080:score(9)=070:score(10)=050
nom$(0)=""
nom$(1)="Jean Claude":nom$(2)="JL35      ":nom$(3)="Jicehel    ":nom$(4)="Ygeronimi  ":nom$(5)="JJN4      "
nom$(6)="Bignono    ":nom$(7)="Cosmos70  ":nom$(8)="Klaus      ":nom$(9)="Papydall  ":nom$(10)="Untel    "
sc():' afficher le classement initial

place = 110:joueur$="Super Jack ":' ici le nouveau score et le nouveau joueur à intégrer au classement
message "votre score : "+joueur$+str$(place)+" points"

classe():' ici on classe les scores
message "nouveau classement:"

sc():' ici on affiche les nouveaux scores
end

sub classe()
for i=1 to 10
if place>score(i) then flag=score(i):score(i)=place:place=flag:i_joueur$=nom$(i):nom$(i)=joueur$:joueur$=i_joueur$
next i
end_sub

sub sc()
dim_local a$(10)
for i=1 to 10
  if score(i-1)=score(i)
      a$(i)=left$(a$(i-1),1)+" - "+str$(score(i))+" points ......"+nom$(i)
  else
      a$(i)=str$(i)+" - "+str$(score(i))+" points ......"+nom$(i)
  end_if
  print a$(i)
next i
print
end_sub
PS: Je n'ai pas fait exprès de te classer en dernière position Papydall, Tu es quand même parmi les meilleurs du Forum!!! farao
A+ Wink Wink Wink
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptyJeu 16 Mai 2013 - 12:30

Merci Bignono.

Moi aussi, je modifie mon code, pour tenir compte que l’envoi d’un code sur le forum, modifie les espaces dans une string !
Je profite de formater l’affichage pour un visu acceptable, mais ça n’a rien à voir avec l’algorithme utilisé.

PS : désolé Jean Claude, tu n’es plus le 1er : un invité t’a déclassé ! Laughing
Ne nous laisse pas trop languir d’attendre de pouvoir jouer à ton jeu que tu caches TOP SECRET !

Code:
' ******************************************************************************
'          POUR_JEAN_CLAUDE.BAS  PAR PAPYDALL
' ******************************************************************************

dim nb_joueur : nb_joueur = 16  : ' Nombre de joueurs
dim joueur$(nb_joueur)  : ' tableau contenant les noms des joueurs
dim score(nb_joueur)    : ' tableau contenant les scores des joueurs
dim class$(nb_joueur)  : ' tableau contenant les classements des joueurs
' --------------------
Init_joueur(nb_joueur)
Init_score(nb_joueur)
tri_bulle(nb_joueur)
classement(nb_joueur)
Affiche_resultat(nb_joueur)
' --------------------

end
' ******************************************************************************
' Remplissage du tableau des joueurs
SUB Init_joueur(n)
    dim_local i
    for i = 1 to n
      read joueur$(i)
' Ajouter les espaces nécessaires pour formater l'affichage des noms des joueurs
      joueur$(i) = joueur$(i) + string$(12-len(joueur$(i))," ")
    next i
' les noms des joueurs
    data "Jean Claude","JL35","Jicehel","Ygeronimi","JJN4","Gigi75","Pan59","Sergeause"
    data "Bignono","Cosmos70","Klaus","Papydall","Mindstorm","Froggy One","Rmont","Invité"
END_SUB
' ******************************************************************************
' Remplissage du tableau des scores
SUB Init_Score(n)
    dim_local i
    for i = 1 to n : read score(i) : next i
' Les scores des joueurs
' toutes mes excuses pour ceux qui ont un score faible; c'est INVOLONTAIRE !
    data 19,15,18,15,15,15,17,18,17,17,19,13,14,16,15,20
END_SUB
' ******************************************************************************
' Tri des joueurs selon leur score
SUB Tri_bulle(n)
    dim_local i,permut,aux,aux$
    REPEAT
      permut = 0
      for i = 1 to N-1
            if score(i) < score(i+1)
' permuter score(i) et score(i+1)
              aux = score(i) : score(i) = score(i+1) : score(i+1) = aux
' permuter joueur(i) et joueur(i+1)
              aux$ = joueur$(i) : joueur$(i) = joueur$(i+1) : joueur$(i+1) = aux$
              permut = 1
            end_if
  next i
    until permut = 0
END_SUB
' ******************************************************************************
' Détermination du classement de chaque joueur en tenant comptes des ex aequo
SUB classement(n)
    dim_local i,r,s$,ex$,z$
    r = 1  : ex$ = " ex aequo " : s$ = string$(10," ")
    for i = 1 to n -1
        if i < 10 then z$ = "0" : else : z$ = "" : ' pour formater les rangs
        class$(i) = z$ + str$(i) + s$
        if score(i) = score(i+1)
          r = i
          repeat
              class$(i) = z$ + str$(r) + ex$ : i = i + 1
              if i = nb_joueur then exit_for
          until score(i) <> score(i+1)

          class$(i) = z$ + str$(r) + ex$
        end_if
    next i
    if score (i) = score(i-1)
      class$(i) = class$(i-1)
    else
      class$(i) = z$ + str$(i)+ s$
    end_if
END_SUB
' ******************************************************************************
' Affichage des joueurs avec classement et score
SUB Affiche_resultat(n)
    dim_local i
    for i = 1 to n
      print class$(i) ; " "; joueur$(i) ; " ";score(i)
    next i
END_SUB
' ******************************************************************************
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptySam 18 Mai 2013 - 18:45

Coucou me revoilou.

Après bien des essais de vos codes, j'ai concocté le mien car mon problème était mal expliqué.

Ce que je voulait c'était d'afficher la classement dans un GRID sans changer la position des joueurs dans ce GRID

Voici mon code
Code:
dim n%,nbj%
nbj%=6:dim score%(nbj%),class%(nbj%)
label Afi_classement

' le grid
dim Grid_1%:Grid_1%=1:grid Grid_1%:width Grid_1%,450
grid_column Grid_1%,7:grid_row Grid_1%,3:grid_row_height Grid_1%,30
for n%=1 to nbj%:grid_write Grid_1%,1,1+n%,"joueur "+str$(n%):next n%:' les joueurs
grid_write Grid_1%,2,1,"Score":grid_write Grid_1%,3,1,"Classement"

' attribution des points
score%(1)=10:score%(2)=8:score%(3)=10:score%(4)=30:score%(5)=5:score%(6)=100
' affiche les scores
for n%=1 to nbj%:grid_write Grid_1%,2,1+n%,str$(score%(n%)):next n%

classe()

END

' ----------
sub classe()
dim_local i%,i2%,i3%,cl%,sc%,nb_index%,index%(nbj%)
' initialise pour permettre l'appel à chaque changement d'un score
sc%=0:nb_index%=0:cl%=1:for i%=1 to nbj%:class%(i%)=0:next i%
' classe
for i3%=1 to nbj%
' recherche meilleur score
  for i2%=1 to nbj%
    for i%=1 to nbj%
        if class%(i%)=0 and sc%<score%(i%) then sc%=score%(i%)
    next i%
  next i2%
' recheche l'index du ou des meilleur scores
    for i%=1 to nbj%
        if index%(i%)=0 and sc%=score%(i%) then index%(i%)=i%:class%(i%)=cl%:nb_index%=nb_index%+1
    next i%
  gosub Afi_classement:' affiche le classement maintenant (en cas de sortie)
  if cl%=nbj% then exit_sub
  sc%=0:cl%=cl%+nb_index%:nb_index%=0
next i3%
end_sub
' -------------
Afi_classement:
' affiche le classement du ou des vainqueurs si index%(i%)<>0
for i%=1 to nbj%
    if index%(i%)<>0 then grid_write Grid_1%,3,index%(i%)+1,string$(8," ")+str$(class%(i%))
next i%
return
' ----

Encore merci car vos codes sont valables pour l'affichage en ordre (du vainqueur au dernier)

A+

PS: pour une bonne compréhension de la suite du topic je ne corrige pas ma phote.


Dernière édition par Jean Claude le Sam 18 Mai 2013 - 21:07, édité 1 fois
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptySam 18 Mai 2013 - 20:24

Salut Jean Claude

Tu as bien fait « d’afficher la classement dans un GRID sans changer la position des joueurs dans ce GRID » Laughing

En tout cas, c’est un bon code, merci ; on pourra s’en servir.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptySam 18 Mai 2013 - 21:03

Il est impitoyable ce Papydall,

Je voulais dire que mon code c'était la classe.... lol!
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement EmptyDim 19 Mai 2013 - 1:11

C'est bien ce que je disais .... que ton code c'était la classement Laughing
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





algorithme de classement Empty
MessageSujet: Re: algorithme de classement   algorithme de classement Empty

Revenir en haut Aller en bas
 
algorithme de classement
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Spectacle d'un algorithme de tri
» Chercher un algorithme
» Classement de photos
» Tracé d’arc de cercle par l'algorithme de Bresenham
»  Algorithme de cryptage de Blaise de Vigénère.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: