2017-03-24 3 views
-2

パスカルでカタロニア数を実行しようとしましたが、致命的な構文エラーが発生しました。Pascal:致命的な構文エラー

エラーは次のとおりです。ここで

Fatal: Syntax error, ";" expected but "identifier B" found 
Error: /usr/bin/ppcx64 returned an error exitcode 

がrefコード

program main; 

var 
i,buf: integer; 

function catalan(num: integer): integer; 
var 
sample, returnval : integer; 

function bincoeff(n: integer): integer; 
    var 
    a,b,retval,numr,denom1,denom2: integer; 
    bc : integer; 

    function fact(x: integer): integer; 
    begin 
    // fact exec 
    if x=0 then 
    fact :=1 
    else 
    fact := x* fact(x-1); 
    end; 
begin 
//bincoeff exec 
a := 2*n 
b := n 
if a==b then 
    retval :=1 
else if b>a 
    retval :=0 
else 
numr := fact(a) 
denom1 := fact(b) 
denom2 := fact(a-b) 
bc := numr /(denom1*denom2) 

retval := bc 
end; 
begin 
// catalan exec 
sample :=bincoeff(num) 
returnval := (sample/(num+1)) 
end; 


begin 

    for i :=0 to 9 do 
    begin 
    buf := catalan(i) 
    writeln(buf) 
    end; 

end. 
+0

他のコメントと答えは別として、 '=='はパスカルで有効な演算子ではありません。比較は '='で行います。そして実際には、ステートメント間の区切り文字として '; 'を使用する必要があります。 –

答えて

2

あなたが体系的に使用していないプログラムの終わりまで

a := 2*n 

以降です ';'。ところで、コンパイラによってかなり明確に信号が伝えられるという事実。

この文脈では、Cとパスカルのセミコロン(セパレータ対ターミネータ)の使用法の重要な違いを指摘しているthe FreePascal wiki on the topic of the semicolonを訪ねるのは興味深いかもしれません。読まなければならない。

+0

ありがとう!役に立つ提案! – Sindhu

+0

再現したエラーメッセージの前にfpcが印刷する数値(この場合(27,2)は、実際には**行**および**列**に問題が発生した箇所です)を知っていますか? – fvu

+0

はい! – Sindhu