Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5024 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Jeu de hasard

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Jeu de hasard

n°1244540
cvex
$CveX
Posté le 13-11-2005 à 11:08:37  profilanswer
 

Bonjour a tous :)
 
J'ai quelques difficultés à faire un algo portant sur un jeu de hasard...
En voici l'énoncé:
 
Vous calculez 10 chiffres entre 0 et 9 de façon aléatoire. Vous mettez ces chiffres dans un tableau TAB.
Si sur ces 10 chiffres, 4 ou plus sont égaux, vous gagné 15€.
Si 3 sont égaux, vous ne touchez rien.
Si 2 sont égaux ou aucun pareils, vous perrdez 7€
Cous jouez 5 fois de suite et vous affichez le total gagné ou perdu à la fin de la partie.
 
Voila ce que j'ai fait:
 
Algo jeu_hasard
 
       var TAB : tableau(1..5, 1..10) de réel
            jeu, i, nb_egaux : ent
 
Debut
 
 pour jeu=1 à 5 faire
   pour i=1 à 10 faire
     TAB(jeu, i) <- generer(0..9)
   fpour
   nb_egaux <- 0
   pour i=1 à 10
     si
       ..
       ..
       ..
 
Voila, je bloque totalement au niveau des conditions, je ne vois pas comment je peux m'y prendre pour résoudre ce problème :s
ça serait vraiment super si quelqu'un m'aidait :)

mood
Publicité
Posté le 13-11-2005 à 11:08:37  profilanswer
 

n°1244544
sircam
I Like Trains
Posté le 13-11-2005 à 11:29:10  profilanswer
 

Tu es bien parti. Tu prends le premier élément, et tu le compares à tous les autres éléments du tableau. Idem pour le 2è, le 3è... jusqu'au dernier. Il te faut une boucle imbriquée.
 


Pour i allant de 1 à 10
    Pour j allant de 1 à 10
        faire qq chose d'utile avec tab(i) et tab(j)
        (...)
   FPour
FPour


 
Après une première itération j, tu sauras combien d'éléments sont égaux à tab(i). Reste à déterminer, parmi toutes ces itérations j, laquelle aura révélé un maximum d'éléments identiques.
 
Essaye pour voir, repère l'un ou l'autre piège et ensuite on discutera cette solution.
 

Spoiler :

C'est évidemment une approche très naïve et bien loin d'être optimisée, mais commençons par là. Pour ceux qui passeraient par là : inutile de balancer une soluce toute faite, laissons élaborer pas à pas, c'est comme ça qu'on apprend.


 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1244552
cvex
$CveX
Posté le 13-11-2005 à 12:01:14  profilanswer
 

Super :)
 
J'ai trouvé :
 

Code :
  1. Debut
  2.   total <- 0
  3.   pour jeu=1 à 5 faire
  4.     pour i=1 à 10 faire
  5.       TAB(i) <- générer(0..9)
  6.     fpour
  7.     nb_egaux <- 0
  8.     pour i = 1 à 10 faire
  9.       pour j = 1 à 10 faire
  10.         si TAB(i) = TAB(j)
  11.           alors nb_egaux <- nb_egaux + 1
  12.         fsi
  13.       fpour
  14.     fpour
  15.     si nb_egaux >= 4
  16.       alors total <- total + 15
  17.              afficher("Vous avez gagnez 15€" )
  18.       sinon si nb_egaux <= 2
  19.                 alors total <- total - 7
  20.                        afficher("Vous perdez 7€" )
  21.               fsi
  22.     fsi
  23.   fpour
  24.   si total = 0
  25.     alors afficher("Vous n'avez rien gagné durant cette partie" )
  26.     sinon si total > 0
  27.               alors afficher("Vous avez gagné ",total," durant cette partie" )
  28.               sinon afficher("Vous avez perdu ",total," durant cette partie" )
  29.             fsi
  30.   fsi
  31. Fin


 
Dis moi, c'est bon ou pas?


Message édité par cvex le 13-11-2005 à 12:02:49
n°1244554
sircam
I Like Trains
Posté le 13-11-2005 à 12:10:56  profilanswer
 

:non:
 
Déroule mentalement tes boucles. Tu compares le premier elt avec les autres. Tu obtiens p.e. nb_egaux=3. Puis tu continue avec le 2è elt. nb_egaux vaut p.e. 5. Et tu continues. Ca ne va pas.
 
Tu dois comparer un i avec tous les autres éléments et obtenir un nb_egaux. Ensuite, tu recommences avec i+1, mais ton nb_egaux doit être remis à zéro! Après avoir effectué tes 10 itérations de i, tu as passé en revue 10 "nb_egaux", et tu dois prendre le plus grand!
 
tab(1) a 3 doublons.
tab(2) a 2 doublons.
tab(x) a y doublons.
 
==> Max = 3 ==> 3 des 10 nombres sont égaux.
 
Je te laisse déterminer le max(nb_egaux).


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1244834
cvex
$CveX
Posté le 13-11-2005 à 21:29:06  profilanswer
 

Oui c'est vrai qu'en réflechissant un peu TAB(i) = TAB(j) quand i et j valent 1
ça me donne une valeur égale c'eet vrai mais je ne voit pas comment je peux résoudre ce problème...
Quand tu me parle du max je vois pas trop ou tu veux en venir

n°1244878
Trap D
Posté le 13-11-2005 à 22:52:24  profilanswer
 

Facilite-toi la vie avec des fonctions
 
algo principal
debut
  total <- 0
  pour i de 1 à 5 faire
     genere(tableau)
     total <- total + evaluer(tableau)
  fin pour
  si total = 0 alors  
       afficher("Vous n'avez rien gagné durant cette partie" )  
  sinon  
  si total > 0 alors  
        afficher("Vous avez gagné ",total," durant cette partie" )  
  sinon  
        afficher("Vous avez perdu ",total," durant cette partie" )  
  fin si  
fin
 
procedure generer(entier tableau[10])
debut
  pour i de 1 à 10 faire
    tableau(i) <- aleatoire(0,9)
  fin pour
fin
 
fonction evaluer(entier tableau[10]) renvoie entier
debut
  // on utilise un tableau intermédiaire de 10 valeurs
  // qui va permettre de compter les nombres de tableau
  // on suppose ce tableau initialisé avec des 0
  entier tab[10]
  // on remplit le tableau tab  
  pour i de 1 à 10 faire
    tab[tableau[i]] <- tab[tableau[i]] + 1
  fin pour
  // on parcourt le tableau pour trouver la valeur maximum
  max = tab[1];
  pour i de 2 à 10 faire
    si max < tab[i] alors
      max <- tab[i]
    fin si
  fin pour
  retour <- 0
  si max >= 4 alors  
     retour <- 15  
     afficher("Vous avez gagnez 15€" )  
   sinon  
   si max <= 2 alors  
     retour <-  - 7  
     afficher("Vous perdez 7€" )  
   fin si  
 
  renvoyer retour
fin


Message édité par Trap D le 14-11-2005 à 08:19:56
n°1245087
Tamahome
⭐⭐⭐⭐⭐
Posté le 14-11-2005 à 12:27:16  profilanswer
 

"le hasard n'existe pas" (c)

n°1245299
sircam
I Like Trains
Posté le 14-11-2005 à 15:17:16  profilanswer
 

Trap D> Evite de donner une solution toute faite svp :
 
- C'est pas réglo -/- charte.
- Tu lui ôtes le plaisir de chercher.
- Tu utilises des fonctions : peut-être que cvex ne connaît pas encore.
 


  // on utilise un tableau intermédiaire de 10 valeurs
  // qui va permettre de compter les nombres de tableau  


Tu joues sur une particularité de l'énoncé, à savoir que les nombres générés sont compris entre 1 et 10 ??? C'est ça ? Je n'ai pas compris la suite:
 


  // on remplit le tableau tab  
  pour i de 1 à 10 faire
    tab[tableau[i]] <- tab[tableau[i]] + 1
  fin pour  


(Sans doute une question de notation ou quoi ? :heink:)


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1245333
Trap D
Posté le 14-11-2005 à 15:40:19  profilanswer
 

Désolé, si j'ai donné une solution, mais il me semble en avoir lu une autre.:(  
 
Oui, j'ai pris un tableau intermédiaire de 10 valeurs puisque le tableau initial avait 10 valeurs.
J'ai supposé que "tab" était initialisé à 0
ensuite en supposant que tableau[1] = 5, la case numéro 5 de tab qui contient le nombre de 5 de tableau (tu me suis) doit être augmentée de 1 pour passer de 0 à 1 donc tab[tableau[1]] reçoit l'ancienne valeur (0) de tab[tableau[1]] + 1
On répète les opérations pour tous les nombres de tableau.

n°1245458
sircam
I Like Trains
Posté le 14-11-2005 à 17:49:11  profilanswer
 

C'est une mauvaise idée, en quelque sorte, car que se passe-t-il si au lieu de générer des nombres de 1 à 10, on génère des nombres de 1 à 1000 ou plus ? Tu auras rapidement un sérieux soucis et cette optimisation se retournera contre toi.
 
Je la gardais justement comme optimisation pour un cas particulier (celui de l'énoncé). A ne pas proposer tel quel au TP...
 
:D


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
mood
Publicité
Posté le 14-11-2005 à 17:49:11  profilanswer
 

n°1245634
cvex
$CveX
Posté le 14-11-2005 à 21:31:41  profilanswer
 

Merci pour votre contribution mais je comprends toujours pas pourquoi on doit utiliser les variables max pour arriver a s'en sortir :s
 
De plus les fonctions, j'ai pas encore vu donc je veux arriver a résoudre ce problème sans les fonctions ^^
 
Merci encore :)

n°1245675
Trap D
Posté le 14-11-2005 à 22:33:27  profilanswer
 

Je me suis limité à l'énoncé de l'algo, sans chercher de généralisation, j'y penserai dorénavant.

n°1245680
sircam
I Like Trains
Posté le 14-11-2005 à 22:35:34  profilanswer
 

Reprenons calmement.
 
Soit t = {2, 4, 4, 5, 2, 4, x, x, x, x}
 
Tu commences : t(1) = 2.
 
Tu compares t(1)=1 à tous les autres t(x). Ton nb_egaux=2.
 
Tu recommences avec t(2) = 4.
 
Tu compares t(2)=4 à tous les autres t(x). Ton nb_egaux=3.
 
Et ainsi de suite jusque t(10).
 
Tu as donc 10 nb_egaux : Le premier valait 2, le 2è valait 3, les autres, mon exemple ne le dit pas.
 
Tu dois trouver le nb_egaux le plus grand. En l'occurence, il vaut 3, c'était celui lié à t(2).
 
OK ? [:pingouino]

n°1246067
cvex
$CveX
Posté le 15-11-2005 à 15:25:50  profilanswer
 

pour i = 1 à 10 faire
     pour j = 0 à 9 faire
       si TAB(i) = j
       alors nb_egaux <- nb_egaux + 1
       fsi
     fpou
    fpour

n°1246068
sircam
I Like Trains
Posté le 15-11-2005 à 15:27:03  profilanswer
 

Oui. La suite ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1246077
Tamahome
⭐⭐⭐⭐⭐
Posté le 15-11-2005 à 15:39:36  profilanswer
 

sircam a écrit :

Oui. La suite ?


 
gliglou gligli glou
      glouglouglou
         glaglou <- glaglou +3
       fin glouglouglou
fin gliglou gligli glou


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Jeu de hasard

 

Sujets relatifs
Jeu de pateforme sous director 8.5Jeu (mmorpg) programmation ?
[PHP] Test: Jeu de Carte: Manille en PHP + AJAX[Jeu] Calculer la visibilité des unités entre elles....
3 données au hasardJeu de cartes - Refresh discret
[ALG'EXEC] Jeu du 421Jeu Client/Serveur A l'aide
[?] Programmer le "hasard" ?Une page au hasard
Plus de sujets relatifs à : Jeu de hasard


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)