2013-11-23 4 views
-2

파스칼 코드에 문제가 있습니다. 몇 가지 오류가 있으며 어디서 모르는 지요.구문 오류, ';' 예상했지만 'until'이 발견되었습니다.

program GTA6; 

uses 
    Crt; 

var 
    obraz, x, mampistoli, mamnuz: Integer; 
begin 
    clrscr; 
    randomize; 
    obraz := 1; 

    repeat 
    clrscr; 
    if obraz = 1 then 
    begin 
     writeln('Je 9:00 rano. Probudis se ve svem byte. Nekdo ti zvoni na dvere. Pujdes otevrit(2) nebo budes zvonek ignorovat(3)?'); 
     readln(obraz); 
     if (obraz <> 2) and (obraz <> 3) then 
     obraz := 1; 
    end 
    else 
    if obraz = 2 then 
    begin 
     writeln('Otevres dvere a jsou tam dva dvoumetrovy plesaty chlapi s pistolema v ruce. Prej dluzis jejich sefoj 200 000 Kc a chce je vratit do 19:00 jinak te prijdou zabit.'); 
     writeln(' Sahnout po pistoli(4), nedelat nic (5)'); 
     readln(obraz); 
     if (obraz <> 2) and (obraz <> 3) and (obraz <> 4) and (obraz<> 5) then 
     obraz := 2; 
    end 
    else 
    if obraz = 5 then 
    begin 
     if mampistoli <> 1 then 
     begin 
     writeln('Odesli. Ty zjistis, ze nemas 200 000.'); 
     writeln('vzit si pistoli(1), nebo si vzit nuz(2)'); 
     readln(x); 
     if x = 1 then 
      mampistoli := 1; 
     if x = 2 then 
      mamnuz := 1; 
     end; 
     writeln('Takhle narychlo tolik penez nesezenes...budes muset udelat banku, nebo tak neco.'); 
     writeln('Vyloupit banku (6), trafiku (7), vykr st auto (8)'); 
     readln(obraz); 
     if (obraz <> 6) and (obraz <> 7) and (obraz <> 8) then 
     obraz := 5; 
    end 
    else 
    if obraz = 6 then 
    begin 
     if mampistoli = 1 then 
     begin 
     writeln('Rozhodl jsi se vyloupit banku s pistoli.'); 
     writeln('Hlidac videl tvoji zbran a vystrelil po tobe!'); 
     x := random(100); 
     if x < 50 then 
      writeln('Trefil te primo do hlavy!'); 
     writeln('Zemrel jsi!'); 
     obraz := 0; 
     end; 
    until obraz = 0; 

    writeln('KONEC HRY'); 
    if x > 50 then 
    writeln('Netrefil se!'); 
    readln; 
end. 

어디에 문제가 있습니까?

+3

다른 사람에게 살펴볼 때 코드 서식을 지정하십시오. 게시물을 편집하여 모든 공백을 제거하고 들여 쓰기 쉽게 읽을 수 있습니다. –

+0

'case' 문을 사용하는 법을 배우십시오. 그것은 당신의 스파게티 코드를 단순화합니다. – TLama

답변

0

until 문 앞에 end;을 추가하십시오.

0

if 문 중 하나에 대해 end;가 누락되었습니다.

당신은 코드 블록 시작이 두 if 문이 있습니다

end else if obraz=6 then begin 
    if mampistoli=1 then begin 

을하지만, 단 하나의 end;을 종료하려면이있다.

코드를 세 심하게 들여 쓰면 이런 문제를 쉽게 발견 할 수 있습니다.

0
repeat 
... 
    end else if obraz=6 then 
    begin 
     if mampistoli=1 then 
     begin 
      writeln('Rozhodl jsi se vyloupit banku s pistoli.'); 
     writeln('Hlidac videl tvoji zbran a vystrelil po tobe!'); 
     x:=random(100); 
     if x< 50 then writeln('Trefil te primo do hlavy!'); 
      writeln('Zemrel jsi!'); 
     obraz:=0; 
     end; 
    END; <--- 
until obraz=0; 
+0

http://cs.wikipedia.org/wiki/Styl_z%C3%A1pisu_programu podivej se jak zarovnavat kod - 시작을 끝내십시오 stejne urovni. 들여 쓰기는 특히 파스칼에서 프로그래밍을위한 기초입니다. – Andrew

+0

Andrew, 글쎄, 답글에 들여 쓰기도 잘못되었습니다 ;-) – TLama

+0

: D 당신 말이 맞습니다. 나는 실수가 어디인지를 발견하기 위해서만이 "틀린 인형"을 만들었습니다. 나는 그것이 지금 ok다는 것을 희망한다 :) – Andrew

관련 문제