質問 |
||
| QNo.3951273 | 除算がなぜかできません(pascal) | |
|---|---|---|
| 質問者:rurur |
フィボナッチ数列の連続する項の差の比 z(n) = { f(n-1) - f(n-2) } / { f(n) - f(n-1) } 、 これのz(n-1),z(n)の差の絶対値がある定数以下になった時(100項まで)に計算を終了するプログラムを作ったのですが、何度コンパイルしても上の式の除算部でエラーが起きてしまいます。 どこがおかしいのかご教授ください。 program Toi3 (input,output); const dif = 1.0 * exp(-6); var n : integer; result : real; function f(n:integer):integer; begin if(n>=0)and(n<=1) then f:=1 else f:=f(n-1)+f(n-2); end;{f} function z(n:integer):real; begin z := {f(n-1) - f(n-2)}/{f(n)-f(n-1)} end; begin n:=2; while (n=100) or (result<dif) do begin n:=n+1; result:= abs(z(n)-z(n-1)) end; if n=100 then begin result:= abs(z(100)-z(99)); if result<dif then begin writeln('収束した') end else begin writeln( z(100),'収束しなかった') end end else begin writeln('収束した') end end. エラー: 17 z := {f(n-1) - f(n-2)}/{f(n)-f(n-1)} E 18460--------------------------------^--- Replaced '/' with a identifier In function z: w 18270 variable n is never used |
|
困り度:
|
||
| 質問投稿日時: 08/04/15 17:49 |
||
回答良回答20pt |
|
| ANo.2 | 数式をグループ化して優先順位を明示するために使われる括弧として {}, [], () など複数の記号を用いるのはあくまで手書きの場合の流儀で,プログラム言語の場合は何重の入れ子の括弧になっていようとも () の記号だけを用いる場合が多いです。 z := (f(n-1) - f(n-2)) / (f(n) - f(n-1)) で試してみてはいかがでしょう。 |
|---|---|
| 回答者:jjon-com | |
| 種類:回答 どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/04/15 22:18 |
|
| |
| この回答へのお礼 | 試した結果ちゃんと作動できました、ご指摘ありがとうございます。 |
回答良回答10pt |
|
| ANo.1 | 私は純粋なPascalは良く知りませんが、恐らく { と } は 括弧の意味ではないと思いますよ・・・・ Delphiでは{}はコメントです。 |
|---|---|
| 回答者:lachesis-r | |
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/04/15 18:13 |
|
| |
| この回答へのお礼 | 勘違いしていました、ご指摘ありがとうございます。 |