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

Langage Pascal Discussion :

[LG] Imbrication de If


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut [LG] Imbrication de If
    bonjour
    Je me remets au pascal difficilement apres une période de révision intense...
    je cherche à faire un test avec une imbrication de if then ( et pas avec la méthode des case of)
    voici ma source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if m <11 then
               begin
                 if m <3 then
                  begin
                    writeln ('Vous avez eu de la chance...') ;
                  end
                  else
                  begin
                    writeln ('C''est dans la norme...') ;
               end;
               else
               begin
                 writeln ('Tu peux mieux faire...') ;
            end ;
    un truc vraiment simple quoi.... mais non j'y arrive pas....
    je pense que c'est une histoire avec les else if mais j'en sais pas plus.

    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Ben c'est quoi le problème ?

    Déjà si tu indentais ton code plus rigoureusement (et en supprimant les begin end inutiles), tu obtiendrais quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if m <11 then
    begin
        if m <3 then
            writeln ('Vous avez eu de la chance...') 
        else
            writeln ('C''est dans la norme...') ;
    end
    else
        writeln ('Tu peux mieux faire...') ;
    Entre 0 et 3, "Vous avez eu e la chance"; entre 3 et 11, "C'est dans la norme"; supérieur à 11, "Tu peux mieux faire..."
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    merci d'avoir répondu si vite...
    mais le pb reste le meme, j'ai toujours le meme message "error 113 in statement" à hauteur du dernier else il me semble.

    ps : je mets des begin et des end partout car c'est une habitude de les mettre pour chaque bloc....

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Tu dois avoir un begin qui n'a pas de end correspondant... Essaye de mettre le bout de code qui cloche ici.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    tiens tant qu'à faire je mets tout :

    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
     
    program mastermind ;
    uses crt ;
    var e, z, cpt, n, m : integer ;
        rep : char ;
    begin
        clrscr ;
        randomize ;
        rep := 'o' ;
        while rep ='o' do
          begin
            gotoxy (25,1) ;
            write ('MasterMind chiffr‚') ;
            gotoxy (25,2) ;
            write ('******************') ;
            z := random (9999) ;
            gotoxy (1,5) ;
            write (z) ;
            gotoxy (1,6) ;
            write ('Essais : ') ;
            gotoxy (1,7) ;
            n:=1 ;
            while e<>z do
              begin
                   write (n, ')' ) ;
                   readln (e) ;
                   n:= n+1 ;
                   m:=n-1 ;
              end ;
            gotoxy (1,20) ;
            write ('Code correct trouv‚ en ', m, ' coup') ;
            gotoxy (1,25) ;
            if m <11 then
            begin
            if m <3 then
               writeln ('Vous avez eu de la chance...') ;
            else
               writeln ('C''est dans la norme...') ;
            end
            else
            writeln ('Tu peux mieux faire...') ;
            end ;
            write ('Voulez-vous recommencer ? ') ;
            readln (rep) ;
            clrscr ;
          end;
    end.
    Et ça bug bien apres le "else" de "vous avez eu de la chance"....
    Bizzar, bizzar ce truc

  7. #7
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    2 erreurs :

    - avant un else, il n'y a jamais de ; sauf pour fermer une instruction, donc dans ton cas il faut que tu enlèves le ; juste avant. Une ligne if ... then ... else ...; est une et une seule instruction.

    - le troisième end avant la fin du programme ne correspond à aucun begin (il me semble)
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    l'avant dernier end ; correspond à la fin de la boucle while qui engloble la quasi totalité du programme.
    J'ai trouvé la solution pour le reste : c'est tout bete on avait oublié le begin juste apres le dernier else....
    voili voilà merci pour le coup de main initial

  9. #9
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Citation Envoyé par faenor
    l'avant dernier end ; correspond à la fin de la boucle while qui engloble la quasi totalité du programme.
    J'ai trouvé la solution pour le reste : c'est tout bete on avait oublié le begin juste apres le dernier else....
    voili voilà merci pour le coup de main initial
    L'avant dernier end oui il correspond au while, et tu as donc bien un end en trop (sauf si tu as corrigé en mettant un begin). Mais dans ce cas ci, tu n'as pas besoin de begin end car le bloc ne fais qu'une seule instruction ! L'abus de begin end alourdit le code et le rend parfois illisible... Ma solution était donc valable
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

Discussions similaires

  1. Pb Imbrication
    Par Boujou dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/04/2005, 16h34
  2. [XML] Imbrication balises/texte
    Par bourbaki2003 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 10/11/2004, 18h00
  3. [HTML]Imbrication de tableaux
    Par LhIaScZkTer dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 06/11/2004, 11h33
  4. suppression d'imbrication
    Par dor_boucle dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/07/2004, 11h30
  5. [debutant] suppression d'imbrication
    Par dor_boucle dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/07/2004, 17h01

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