• 締切済み

指定した長さのフィボナッチ数列を出力したい(pascal)

例えば「長さ:6」と入力すると6桁のフィボナッチ数列の項だけを出力するプログラムを作ってるのですが、意外なところで躓いてしまいました。どこが変なのか教えてください。 program fib_search (input,output); var i,p,x,y : integer; f : array[0..500] of real; function fib(n:integer):integer; begin if(n>=0)and(n<=1) then fib:=1 else fib:=fib(n-1)+fib(n-2); end;{fib} begin writeln('数列の長さ:'); readln(p); x:=0; y:=0; for i:= 1 to 5*p do begin x:= trunc(fib(i)/(10^p)); y:= trunc(fib(i)/(10^(p-1))); if (x=0) and (y>=1) then begin writeln(fib(i)) end end; end. 例えばp=6として、10の6乗で割った数x=0&10の5乗で割った数y>=1 だと6桁、と考えました。1 to 5*p は、ざっと数列を見たところ(桁数×5)項までにその桁の数字はぎりぎり出尽くしている、と考えたからです。 これをコンパイルするとx、y共に「 Replaced '^' with a '+'」と出て、 x:= trunc(fib(i)/10^p); y:= trunc(fib(i)/10^(p-1)) と分母の()を取ると「 Expected ')'」と出てしまいます。 また、「(fib(i))」としても同様「 Replaced '^' with a '+'」と出てしまうのです。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

とりあえず、'^' はPascalではポインタで使用する演算子であって 冪の演算子じゃないでしょ。 大矢建正 Pascal 演算子一覧 http://www.ss.u-tokai.ac.jp/~ooya/Program/Kaisetsu/Enzansi.shtml Object Pascal講座 - ポインタとポインタ型 http://merry.whitesnow.jp/SEMIPAS/SECTION7/sec7_1.html

rurur
質問者

お礼

ご指摘ありがとうございました。上記のページでも冪乗の方法が解らなかったのですが、自分なりに調べてなんとか理解できました。

関連するQ&A

専門家に質問してみよう