2016-07-25 16 views
0

Ich versuche, mehrere if/else-Anweisungen innerhalb einer Repeat Until-Schleife (Pascal) zu verwenden. Ich erhalte eine Fehlermeldung, dass der Compiler die Until-Anweisung nach der ersten If-Klausel erwartet erledigt.Mehrere if/else-Anweisungen in einer Wiederholungsschleife verwenden

Wie kann ich die anderen if/else-Anweisungen in die Schleife verschachteln?

program adventureTime; 
uses crt; (** for debug purposes. it allows the use of the readkey function **) 

var 
    playerName, inputAnswer : string; 
    gameCounter : integer; 

begin 
    (** INTRODUCTION **) 
    gameCounter := 0; 

    repeat 
      writeln('Hello adventurer. What is thy name? '); 
      readln(playerName); 

      writeln('It is nice to meet you ', playerName, '.'); 
      writeln('Are you ready for an adventure? (yes/no/maybe)'); 

      readln(inputAnswer); 

      if (inputAnswer = 'no') then 
        writeln; 
        writeln('Wrong answer! Try again!'); 
        writeln; 
        gameCounter := 0; 

      else if (inputAnswer = 'yes') then 
        writeln; 
        writeln('Great! Get ready for the adventure of a lifetime!'); 
        writeln; 
        gameCounter := 2; 

      else if (inputAnswer = 'maybe') then 
        writeln; 
        writeln('Make up your mind, fool!'); 
        writeln; 
        gameCounter := 0; 

      else 
        writeln; 
        writeln('That was not one of the options!'); 
        writeln; 
        gameCounter := 0; 

    until gameCounter <> 0; 


    writeln('out of bounds'); 
    readkey; 

end. 
+0

See [diese Antwort] (http://stackoverflow.com/a/28221465/62576) für ein Tutorial über if und begin/end. –

+0

Mögliches Duplikat von [Richtige Struktursyntax für Pascal, wenn dann begin end und; (im Inno Setup)] (http://stackoverflow.com/questions/28221394/proper-structure-syntax-for-pascal-if-then-begin-end-and-in-in-no-setup) –

+0

Vielen Dank, Ken ! Ich war in der Lage, mein Problem zu lösen, indem ich das Tutorial, das Sie mit der anderen Antwort auf diesem Post senden, kombiniert. – qmesa

Antwort

0

nicht sicher, aber nicht ein, wenn else-Anweisung in pascal sieht wie folgt aus:

if ... then 
begin 
. 
. 
. 
end 
else if... 
+0

Betrachtet man die Freepascal-Dokumentation (http://www.freepascal.org/docs-html/current/ref/refsu58.html#x163-18500013.2.3), ist es für mich nicht klar, ob das der Fall ist. Die Dokumentation schlägt vor (im Beispiel unten), dass die Endklausel nicht für jede einzelne if/else-Klausel implementiert werden muss. Ich hatte gehofft, eine Wiederholungsschleife zu implementieren, die sich um alle if else-Klauseln "wickelte" (um nicht die Endklauseln für jede einzelne if/else-Anweisung zu verwenden). – qmesa

+1

Ich konnte das Problem lösen, indem ich Ihren Kommentar und Kens Tutorial-Link verwendete. Durch das Starten und Beenden der separaten if/else-Anweisungen war die Syntax korrekt und der Code kompiliert ohne Probleme. Vielen Dank! – qmesa

+0

froh, Ihnen helfen zu können! Es scheint, dass Sie nur "begin" und "end" weglassen können, wenn Sie nur eine einzelne Anweisung ausführen, nachdem Sie die Bedingung überprüft haben. – user6454491