Bonjour à tous,
Je dois rédiger un algorithme simulant l'exercice suivant, il doit indiquer "à l'heure" ou "en retard", je dois pouvoir ensuite pouvoir faire tourné l'algorithme 100 fois et savoir combien j'ai de "en retard".
Seulement j'ai quelques problèmes lors de l'exécution du programme, il ne s'arrête pas.
0 donne C
0 donne D
Input"nombre d'essais",N
For (I,1,N)
EntAléat(0.10) donne A
IF 7<A
then
1 donne B
B+C donne C
Else
If A<8
0 donneB
B+C donne C
EntAléat(0.10) donne A
IF 7<A
then
1 donne B
B+C donne C
Else
If A<8
0 donneB
B+C donne C
EntAléat(0.10) donne A
IF 7<A
then
1 donne B
B+C donne C
Else
If A<8
0 donneB
B+C donne C
EntAléat(0.10) donne A
IF 7<A
then
1 donne B
B+C donne C
Else
If A<8
0 donneB
B+C donne C
EntAléat(0.10) donne A
IF 7<A
then
1 donne B
B+C donne C
Else
If A<8
0 donneB
B+C donne C
If 1<C
then
1+D donne D
Disp " en retard"
Else
0+D donne D
Disp "a l'heure"
Disp D
N-D donne E
Disp"retard",D
Disp"a l'heure",E
End
J'aimerai savoir ce qu'il faudrait changer. En résumé, le programme tire un numéro entre 0 et 10 5 fois, à chaque fois , si le numéro est compris entre 8 et 10, alors on rajoute 1 à C, dans le cas contraire on ne rajoute rien.Si C vaut plus que 1 ( C est le nombre de feux rouges) , alors on considère que l'élève est en retard. Cependant , il faut connaitre le nombre de fois ou l'élève est arrivé en retard d'ou D , qui compte le nombre de fois ou l'élève est arrivé en retard et E le nombre de fois à l'heure.
Merci d'avance
J'ai oublié de mettre l'énoncé de l'exercice à simuler:
Un élève se rend à vélo à son lycée à une distance de 3 km à 15km/h. Il rencontre 5 feux, il a 0.7 chance que chaque feu soit vert. Un feu vert ne le retarde pas,un feu rouge le retarde d'une minute. Il part de chez lui 13 minutes avant la sonnerie.
Bonjour,
c'est du TI-BASIC ? L'idée générale fonctionne, mais :
- ça ne s'arrête pas, probablement parce qu'il te manque des End : chaque If et chaque For doit avoir son End.
- B ne sert à rien
- Si tu veux simuler 7 chances sur 10, tu dois choisir A entre 1 et 10, pas entre 0 et 10.
- Ensuite, Si A <= 7 alors vert, sinon rouge, pas besoin de faire un 2e test sur A
- Plutôt que de réécrire 5 fois le même bloc, tu peux le mettre dans une boucle For(J,1,5) sans oublier le End à la fin.
Pour le test de A, le plus simple c'est
Si A > 8 alors c+1->c
Et c'est tout. Pas de sinon, pas d'autre test : si le feu est vert on ne fait rien.
Merci pour ses réponses, oui c'est du TI basic , je ne suis qu'en première, dois je mettre tous les end à la fin de chaque bloc ou à la fin de chaque bloc ou tout à la fin du programme? Comment puis je réécrire avec une seul même bloc avec le For(J,1,5)?
1 End à la fin de chaque bloc, ça c'est pour chaque If.
+ 1 End à la fin du 5e bloc, ça c'est pour le For
For (I,1,N)
For (J,1,5)
EntAléat bla bla
If A >= 8 bla bla
End (celui du If)
End (celui du For J)
End (celui du For I)
...
la fin avec D, E etc.
Merci, mon programme donne du coup :
0 donne C
0 donne D
Input"nb essai",N
For(I,1,N)
For(J,1,5)
entAléat(1.10) donne A
If A ≥ 8
C+1 donne C
End
End
If 1<C
Then
1+D donne D
Disp "late"
else$
0+D donne D
disp "on time"
End
N-D donne E
Disp "Late:", D
Disp "on time":E
End
Le problème est que j'ai toujours qu'un seul "late" et le reste en "on time". Par exemple si j'ai 100 essai:
late 1
on time 99
Si j'ai 5 essai
late 1
on time 4
C'est pas entAléat(1,10) avec , au lieu de . ?
L'initialisation 0 -> C devrait être entre le For I et le For J : il faut remettre à 0 le nombre de feux rouges à chaque expérience.
Le test If 1<C devrait être fait à chaque expérience, là il est fait seulement tout à la fin. Déplace le End du For I après celui du If 1<C
0+D -> D ne sert à rien.
Le dernier problème est que le D prend pour valeur seulement 1 ou 0 , les additions ne continuent pas.
Si tu as bien
...
C+1 donne C
End (1 seul end, celui du for J)
If 1<C
...
puis
...
disp "on time"
End (le End du If 1<C)
End (le End du For I)
N-D donne E
...
ça doit le faire
voici le programme:
0 donne D
Input"Nb essai",N
For(I,1,N)
0 donne C
For(J,1.5)
enAléat(1.10) donne A
If A ≥ 8
c+1 donne C
END
If C≥1
Then
1+D donne D
END
END
N-D donne E
Disp "LATE", D
Disp "ON TIME",E
hors selon les calculs , on devrait la plupart du temps avoir ON TIME, or ici, selon le programme , on a plus de LATE. Pourquoi?
Parce que c'est
If C>1
au lieu de
If C≥1
Avec 1 seul feu rouge l'élève est encore à l'heure.
C'est à partir de 2 feux rouges qu'il est en retard.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :