Problème "simple" (?) de boucle - Perl - Programmation
Marsh Posté le 13-03-2008 à 15:56:28
rien compris ( en plus je pense que le "autres instructions" est nécessaire pour qu'on comprenne)
Mais bon déjà j'écrirais le début comme ça:
Code : |
Marsh Posté le 13-03-2008 à 16:45:55
Merci messieurs ! \o/
Vos 2 réponses fonctionnent tout à fait.
texaff, si ta solution fonctionne, je ne comprend pas pourquoi.
Dans l'instruction : for ($i=1;$i=$rangmax;$i++)
le $i=$rangmax serait une affectation ?
En tout cas je donne le code complet de mon "projet" (en l'état, càd pas tout à fait fonctionnel) pour anapajari. Merci beaucoup à vous.
Code :
Code :
|
Marsh Posté le 13-03-2008 à 16:51:00
oui tu affecte effectivement rangemax a $i (d'ou le souci )
c'est un peut comme si tu fais if ($i = $rangemax)
tu affecte rangemax a $i et le if marche toujours...
Marsh Posté le 13-03-2008 à 16:54:01
texaff a écrit : oui tu affecte effectivement rangemax a $i (d'ou le souci ) |
Ok merci pour cette précision.
Marsh Posté le 13-03-2008 à 17:44:40
c'est n'importe quoi
tu lis 12 fois ton fichier alors qu'un seule lecture serait suffisante.
Et pis ta division par 100 pour s'assurer de l'écart ça marche pas non plus
Exemple: Marc a eu 11000 et Jean 100. Divisé par 100 tu te retrouves avec 110 et 1 soit un écart de plus de 100
A l'instinct j'aurais écrit un truc comme ça:
Code :
|
Après tu devrais te retrouver avec une hash dont la clé est le nom du joueur, et la valeur un tableau qui te présente l'évolution du stack de celui-ci .
note: je dis devrais parce que comme j'ai pas ton fichier, c'est à l'instinct sans rien vérifier
note2: en connaissant mieux la ligne du fichier il doit être possible de simplifier 2/3 trucs aussi
Marsh Posté le 13-03-2008 à 18:57:54
Citation : c'est n'importe quoi |
Euuuh désolé, mais j'ai construit mon script petit bout par petit bout; Dès lors qu'un code faisait ce que je voulait une fois, j'ai juste chercher à le mettre en boucle ... ça donne ce genre de code déguelasse
Citation : Et pis ta division par 100 pour s'assurer de l'écart ça marche pas non plus |
Les parties de poker que ce code à pour but d'étudier sont à 10 joueurs ayant un stack de départ de 1000. Aucun joueur ne peut atteindre 11000 jetons.
Je comprend bien que tu ne puisse faire un code fonctionnel juste avec mes ébauches.
Je te donne un extrait du fichier à titre d'exemple;
Je vais prendre le temps nécessaire pour revoir le script (il m'a fallu 3 jours pour pondre ce que tu à réécris en 10 minutes) ;
Je reviendrais vers HardWare.fr pour me faire "corriger" de nouveau
Citation : Commencer une partie 2874842385. |
Marsh Posté le 14-03-2008 à 09:29:32
bon j'étais pas forcément super loin.
Essaye ça et dis moi ce que tu penses du résultat:
Code :
|
Tut_noh a écrit : Les parties de poker que ce code à pour but d'étudier sont à 10 joueurs ayant un stack de départ de 1000. Aucun joueur ne peut atteindre 11000 jetons. |
Ok, alors je comprends.
Si cette méthode te convient tu peux virer les 3 dernières lignes du script plus haut.
Marsh Posté le 13-03-2008 à 15:46:34
Bonjour à tous.
Je code à l'occasion en perl pour mon "plaisir" et je tente en ce moment de réaliser un petit script ayant pour objectif d'extraire des valeurs d'un fichier texte pour construire un graphique (je vous passe les détails)
Voici mon bout de code "problématique" :
Je cherche à obtenir une variable ($url) contenant :
chart.apis.google.com/chart?chs=700x300&cht=lxy&chd=t:1,2,3,4,5,6,7,8,9,10, [...] à laquelle j'ajouterais d'autres éléments durant le reste de la première boucle FOR.
Pour l'instant, le code que j'ai pondu me donne un résultat du type :
chart.apis.google.com/chart?chs=700x300&cht=lxy&chd=t:71,71,71,71,71,71,71,71, [...]
la variable $rangmax vaut 71 dans cet exemple.
J'ai rajouter quantité de PRINT pour étudier le comportement de mon script mais je ne comprend toujours pas pourquoi la seconde boucle FOR ne "passe pas" par la valeur 1, puis 2, ....
En sortie, je m'attend à :
iteration premiere boucle for : rang 1
iteration seconde boucle for : rang 1
avec une valeur de rangmax : 71
url vaut chart.apis.google.com/chart?chs=700x300&cht=lxy&chd=t:1,
iteration seconde boucle for : rang 2
avec une valeur de rangmax : 71
url vaut chart.apis.google.com/chart?chs=700x300&cht=lxy&chd=t:1,2, [et cetera]
Avec ce code, j'obtient :
iteration premiere boucle for : rang 1
iteration seconde boucle for : rang 71 ( )
avec une valeur de rangmax : 71
url vaut chart.apis.google.com/chart?chs=700x300&cht=lxy&chd=t:71,
iteration seconde boucle for : rang 71
avec une valeur de rangmax : 71
url vaut chart.apis.google.com/chart?chs=700x300&cht=lxy&chd=t:71,71, [et cetera]
J'ignore totalement ou est ma faute.
Merci de m'avoir lu;