2011-10-03 271 views
2

我需要計算奇數/偶數之和,這裏是我到目前爲止有:奇數偶數和

PROGRAM EvenOddSum; 
USES 
    WinCrt; 
VAR 
    odd, even, x: INTEGER; 

    BEGIN 

    WriteLn('Calculation of sum'); 
    WriteLn; 
    odd := 0; 
    even := 0; 
    Write('Enter value(s)'); 
    WHILE x > 0 DO BEGIN 
    IF x mod 2:= 0 THEN BEGIN 
    even := even + x; 
    ELSE 
    odd := odd + x; 

    ReadLn(x); 
    END; 
    WriteLn; 
    WriteLn('Even sum is = ', even); 
    WriteLn('Odd sum is =', odd); 
    END. 

我用freepascal.org編譯器和我得到這個錯誤:

SYNTAX error THEN expected but := found 

而我只是看不到這個代碼的問題。

+2

我上次寫Pascal的時間是1983年,但是你確定在THEN之後需要BEGIN關鍵字嗎?我記得BEGIN引入了一個像C/C++/Java/C#這樣的指令塊。 –

+0

@EricJ。我想如此http://wiki.freepascal.org/IF – London

回答

7

在Pascal中,:=是賦值運算符。換行=替換爲IF x mod 2:= 0 THEN BEGIN

另外,請刪除BEGIN。該結果應改爲:

IF x mod 2 = 0 THEN 
1

它在這裏:

IF x mod 2:= 0 THEN BEGIN 

:=用於分配,使用 '=' 或 '==' 作比較。我不知道Pascal是用'='還是'==',或者兩者都用於比較,其中一個用來做比較。

1

如果沒有錯,:=用於聲明&指定的值。對於病情,您應該使用=

變化x mod 2:= 0x mod 2 = 0

0

你可以說:

x mod 2 > 0 then writeln(x);

這將打印所有的奇數。