Pourquoi on m'affiche toujours 0?

laylana -  
 123 -
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

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  2. 123
     
    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