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
» bouton dans autre form que 0
algorithme de classement Emptypar leclode Aujourd'hui à 13:59

» KGF_dll - nouvelles versions
algorithme de classement Emptypar Klaus Aujourd'hui à 11:41

» Gestion d'un système client-serveur.
algorithme de classement Emptypar Klaus Aujourd'hui à 10:23

» PANORAMIC V 1
algorithme de classement Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
algorithme de classement Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
algorithme de classement Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
algorithme de classement Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
algorithme de classement Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
algorithme de classement Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
algorithme de classement Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
algorithme de classement Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
algorithme de classement Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
algorithme de classement Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
algorithme de classement Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
algorithme de classement Emptypar papydall Dim 21 Avr 2024 - 23:30

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 algorithme de classement

Aller en bas 
4 participants
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
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 : 5948
Age : 69
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 : 66
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 : 8610
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 : 7002
Age : 73
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 : 5948
Age : 69
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 : 66
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 : 7002
Age : 73
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 : 5948
Age : 69
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 : 7002
Age : 73
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 : 5948
Age : 69
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 : 7002
Age : 73
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: