IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

La commande randomize


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Par défaut La commande randomize
    Bonjour à tous,

    Je tente présentement de faire un programme qui prévoit un nombre aléatoire pour formuler un question d'addition. Mon problème est que mon programme me donne aussi un nombre aléatoire comme réponse !!!! Quelqu'un aurait des pistes à me soumetre.....merci à l'avance. Voici mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    « program Testaddition;
     
    {$APPTYPE CONSOLE}
     
    uses
    SysUtils;
     
    Const max = 10;
     
    Var
    test : Boolean;
    rep : Integer;
    x,y,quest,z : Integer;
    cummubon,cummuerreur : Integer;
     
     
    BEGIN
    Randomize;
    x := Random (max);
    y := Random (max);
    z := Random(x +y);
    quest:=0;
    cummubon:=0;
    cummuerreur:=0;
    quest:=0;
    While cummuerreur <3 do
    While cummubon <6 do
    BEGIN
     
    repeat;
     
    WriteLn ('la question est:',Random(max),'+',Random(max));
    Write('La reponse est :');
    ReadLn(rep) ;
    quest:=quest + 1;
     
    test := (rep=);
    If test Then WriteLn ('Bravo, votre score cumulatif est :',cummubon)
    ELSE WRITELN('Desole, la bonne reponse etait : ',z);
    cummubon:=cummubon +1 ;
     
    UNTIL QUEST=10 ;
    END;
    END.
    ELSE
    cummuerreur:=cummuerreur +1;
     
    WriteLn (
    Writeln ('Votre score cumulatif est :',cummuerreur);
     
    Until quest=10;
    WriteLN ('Fin du test');
    ReadLn;
    end;
    END.
    »

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 948
    Par défaut
    Bien bien bien

    1/ x, y et z sont invariants car "calculés" en début de prog
    2/ z devrait être le résultat de x+y, mais ce n'est pas le cas (z := Random(x +y); )
    3/ tu ne compares jamais la réponse saisie (rep) avec la réponse théorique (z)

    Tout ceci est à déplacer/coder dans ta boucle repeat

  3. #3
    Membre éclairé Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Par défaut
    Bonjour,

    Randomize;
    x := Random (max);
    y := Random (max);
    z := Random(x +y);
    [/CODE]

    quelques explications me semblent utiles :

    [CODE]x := Random (max);
    y := Random (max);
    x vaut une valeur aléatoire comprise entre 0 et 10
    y vaut une valeur aléatoire comprise entre 0 et 10

    c'est ici qu'il y a un problème !
    tu dis que z est égal à une valeur aléatoire entre 0 et (x+y)

    donc tu dois faire simplement


  4. #4
    Aos
    Aos est déconnecté
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Oui c'est vrai qu'il est pas clair du tout ton code.

    Regarde ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WriteLn ('la question est:',Random(max),'+',Random(max));
    Ca n'a aucun sens...! Tu généres un X et un Y au dessus (qu'une seule fois d'ailleurs comme la déja souligné qi550 ) et tu ne le compares jamais.

    De plus, ton Z doit être égale a x+y et non a Random(x+y).

    Essaye comme ça mais j'ai pas vérifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    BEGIN
    Randomize;
     
    quest:=0;
    cummubon:=0;
    cummuerreur:=0;
    quest:=0;
    While cummuerreur <3 do
    While cummubon <6 do
    BEGIN
     
    repeat;
     
    x := Random (max);
    y := Random (max);
    z := x +y;
     
    WriteLn ('la question est:',x,'+',y);
    Write('La reponse est :');
    ReadLn(rep) ;
    quest:=quest + 1;
     
     
    If (z=rep) Then WriteLn ('Bravo, votre score cumulatif est :',cummubon)
    ELSE WRITELN('Desole, la bonne reponse etait : ',z);
    cummubon:=cummubon +1 ;
     
    UNTIL QUEST=10 ;
    END;
    END.
    ELSE
    cummuerreur:=cummuerreur +1;
     
    WriteLn (
    Writeln ('Votre score cumulatif est :',cummuerreur);
     
    Until quest=10;
    WriteLN ('Fin du test');
    ReadLn;
    end;
    END.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Par défaut
    merci. Vos commentaires m'ont permis d'avancer....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le %random% sous DOS (command.com)
    Par nexus-x dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 09/06/2010, 16h52
  2. la commande random
    Par toasty666 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 17/11/2009, 23h48
  3. Commande RANDOMIZE
    Par goutbouyo dans le forum C
    Réponses: 10
    Dernier message: 30/06/2004, 20h46
  4. Réponses: 3
    Dernier message: 02/09/2002, 19h49
  5. Réponses: 2
    Dernier message: 11/08/2002, 22h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo