Pourquoi on m'affiche toujours 0?

Fermé
laylana - 8 sept. 2012 à 02:18
 123 - 6 oct. 2012 à 12:18
Bonjour,

J'ai fait un programme en pascal simulant un jeu de détection d'une valeur V choisie au hasard par l'ordinateur. V étant un entier entre 0 et 99, l'utilisateur est déclarer gagnant s'il arrive à découvrir la valeur de V d'au moins de 5 coups.
Au cours du jeu l'ordinateur guide l'utilisateur pour qu'il arrive à retrouver V en lui expliquant le rapport entre la valeur de V et la valeur de X proposée par l'utilisateur.
Exemple : si V = 80 et x = 63 l'ordinateur affichera « plus grand », si x = 91 l'ordinateur affichera « plus petit » et ainsi de suite jusqu'à l'utilisateur trouve la valeur ou il dépasse les cinq tentatives.

Voilà ce que j'ai essayé de faire :

PROGRAM Jeu_Nb;
Uses Wincrt;
Var v,i,n:integer ;

BEGIN
Write ('Saisir un entier');
v:=random(100);

Repeat
i:=i+1;
Readln (n);
If n<v Then Write ('Plus petit');
If n>v Then Write ('Plus grand');
Until (i=5);

If i=V Then Write ('Bravoo :D')
Else Write ('Dsl Le Nombre Est' ,v)

End.

Je sais pas pourqoui v est toujours =0

2 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
8 sept. 2012 à 02:24
Avant d'utiliser la fonction random, tu dois réinitialiser le générateur de nombre aléatoires au début du programme en appelant la procédure randomize;

Attention : i n'est pas initialisé, et si la plupart des compilateurs vont lui attribuer la valeur 0 par défaut, c'est une très mauvaise habitude à prendre...
0
PROGRAM Jeu_Nb;
Uses Wincrt;
Var v,i,n:integer ;
BEGIN

randomize;
v:=random(100);

Repeat
i:=i+1;
Write('Saisir un entier ');
Readln(n);
If n>v Then Writeln ('Plus petit ');
If n<v Then Writeln ('Plus grand ');
Until (n=v);
If n=V Then Write ('Bravoo :D')
Else Write ('Dsl Le Nombre Est' ,v)
End.
0