Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 692
Réponses : 5
Type : discussion
Etat : réponses autorisées

Algorithme grenouille while / for

f(x)=2x le 15/04/2012 à 13:38
Bonjour !
je dois faire un algorithme.
"Une grenouille se trouve sur un nénuphare noté 0. Faire un lancer aléatoire entre 1 et 0. Si le résultat est 0, la grenouille saute a gauche, sinon elle saute a droite. Au nenuphare 4, il y a un animal, si elle arrive au 4, elle meurt. Si elle arrive au nenuphare -3 elle mange, le jeu s'arrete.
on fait au maximum 10 lancers aléatoires.
Realiser un algo pour qu'il fait 100fois et qu'il fasse afficher le nombre de fois qu'elle meurt, le nombre de fois qu'ele mange & le nombre de fois qu'elle se balade sans manger et sans se faire manger par l'animal."

J'ai fait quelque chose mais il ne me dit pas combien de fois elle se balade sans manger.


VARIABLES
X EST_DU_TYPE NOMBRE // numéro du nénuphare
P EST_DU_TYPE NOMBRE // Resultat du lancer aleatoire 1 ou 0
N EST_DU_TYPE NOMBRE // Compteur de lancers
I EST_DU_TYPE NOMBRE // Indice de boucle
A EST_DU_TYPE NOMBRE // Nombre de fois qu'elle mange
B EST_DU_TYPE NOMBRE // Nombre de fois qu'elle se balade sans manger
C EST_DU_TYPE NOMBRE // Nombre de fois qu'elle meurt

DEBUT_ALGORITHME
1 A PREND LA VALEUR 0
11 B PREND LA VALEUR 0
12 C PREND_LA_VALEUR 0
13 POUR I ALLANT_DE 1 A 100
14 DEBUT_POUR
15 X PREND_LA_VALEUR 0
16 N PREND_LA_VALEUR 0
17 P PREND_LA_VALEUR ALGOBOX_ALEA_ENT(0,1)
18 N PREND_LA_VALEUR N+1
19 TANT_QUE (X!=-3 ET X!=4 ET N<10) FAIRE
20 DEBUT_TANT_QUE
21 SI (P==0) ALORS
22 DEBUT_SI
23 X PREND_LA_VALEUR X-1
24 FIN_SI
25 SINON
26 DEBUT_SINON
27 X PREND_LA_VALEUR X+1
28 FIN_SINON
29 FIN_TANT_QUE
30 SI (X==4) ALORS
31 DEBUT_SI
32 AFFICHER "Mort"
33 B PREND_LA_VALEUR B+1
34 FIN_SI
35 SI (X==-3) ALORS
36 DEBUT_SI
37 AFFICHER "Sieste Digestive"
38 A PREND_LA_VALEUR A+1
39 FIN_SI
40 SI (X!=-3 ET X!=4) ALORS
41 DEBUT_SI
42 AFFICHER "grenouille vit bigmouth.gif"
43 C PREND_LA_VALEUR C+1
44 FIN_SI
45 FIN_POUR
46 AFFICHER "Nombre de sieste digestive"
47 AFFICHER A
48 AFFICHER "Nombre de mort"
49 AFFICHER B
50 AFFICHER "Nombre de vie"
51 AFFICHER C
FIN_ALGORITHME

je l'ai fait sur algobox.
Est ce que quelqu'un peut me dire où est mon erreur ?
sandro le 15/04/2012 à 15:05
tu nous demande où est l'erreur, mais c'est quoi le problème?
tapenad le 15/04/2012 à 15:09
et de plus ce forum est plutôt dédié à la progra sur ti et non sur algobox, je pense donc que la majorité des gens auront du mal à t'aider
sandro le 15/04/2012 à 15:15
bah, c'est du langage naturel, donc ça devrait aller, c'est pas comme si on nous sortait de l'assembleur pour ordinateurs modernes ou du C ou encore du http qui sont incompréhensibles pour ceux qui ne connaissent pas le langage.

Sandro
f(x)=2x le 15/04/2012 à 15:38
Lorsque je le fais fonctionner, j'ai toujours 0 pour le nombre de fois que le grenouille se balade sans manger. Donc je pense que j'ai mal mis certains éléments, mais je ne sais pas lesquels :/ Le prof a dit que ce n'est pas possible d'avoir un resultat nul pour le nombre de fois qu'elle se balade sans manger.
bah je peux tout mettre en langage TI alors ..
Code

Variables:
X numéro du nénuphare
P Resultat du lancer aleatoire 1 ou 0
N Compteur de lancers
I Indice de boucle
A Nombre de fois qu'elle mange
B Nombre de fois qu'elle se balade sans manger
C Nombre de fois qu'elle meurt

Debut:
0->A
0->B
0->C
For(I,1,100
0->X
0->N
entaleat(1,0)-> P
N+1 -> N
While X=/=3 ET X=/=4 ET N<10
If(P==0)
Then
X-1->X
Else
X+1-> X
End
End
If X=4
Then
Disp "Mort"
B+1 -> B
End
If X=-3
Then
Disp "Sieste Digestive"
A+1->A
end
If X=/= -3 ET X=/=4
Then
Disp "grenouille vit "
C+1->C
End
End
disp "Nombre de sieste digestive"
disp A
disp "Nombre de mort"
disp B
disp "Nombre de vie"
disp C

FIN


Voilà.
sandro le 15/04/2012 à 15:44
c'est bon, je crois que j'ai trouvé l'erreur : le 18 N PREND_LA_VALEUR N+1 est hors de laboucle tantQue, donc la condition N<10 ne fonctionne pas : le programme continue donc jusqu'à ce que la grennouille face la sièste ou soit mangée.

Il te suffit donc d'iverser les lignes 18 et 19.

Sandro