フィボナッチ数列を30番目まで計算して配列fibに格納した後、キーボードから何番目かを指定して表示するプログラムを作成してください。
要素を表示する処理は何回も繰り返しおこなえるようにして、キーボードから1~30以外の数値が入力されれば終了する。
_____の部分がわからないです><;;;
よろしくお願いします
#include<stdio.h>
int main()
{
int n,fib[23] = {1,1};
for(___________){
______________
}
printf("数の入力:");
scanf("%d",&n);
while(_______){
printf(___________);
printf("数の入力:");
scanf("%d",&n);
}
printf("終了\n");
}
配列
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 配列
フィボナッチ数列を手書きでかけば書けますか?
どういうアルゴリズムで計算されているか分かりますか?
「___」はとりあえず気にせず1から書いた方が分かりやすいと思いますから、
分かる部分からまず書いてみましょう。
以下のようなプログラムなら書けますか?
これが書ければ答えは出来た様なものです。
1項を表示
2項を表示
1項+2項を表示
2項+3項を表示
...
これを10項まで繰り返して表示
どういうアルゴリズムで計算されているか分かりますか?
「___」はとりあえず気にせず1から書いた方が分かりやすいと思いますから、
分かる部分からまず書いてみましょう。
以下のようなプログラムなら書けますか?
これが書ければ答えは出来た様なものです。
1項を表示
2項を表示
1項+2項を表示
2項+3項を表示
...
これを10項まで繰り返して表示
-
- 記事: 85
- 登録日時: 10年前
- 住所: 日本
- 連絡を取る:
Re: 配列
課題の丸投げっぽい?
又、コードはコードタグで囲ってください。
フィボナッチ数列が何か分かっていますか?
フィボナッチ数列は、前の数+その前の数 の数列です。
例えば、1,1,2,3,5・・・
つまり、ループ内で配列の要素に1つ前と2つ前の要素を足したものを入れればいいのです。
霊:iがループカウンタ の様な感じです。
また、while文の中と前に を書くのではなく、必ず一回実行してから条件によってループするdo~while文を使ったらどうでしょうか? 霊:ループ処理を行う→条件があっていたら→ループ処理を行う...
そして、条件式は入力された値のnが1~30でない場合です。
頑張ってください。
追記:
上のDixqさんの方法(手書き)もいいと思います。
もし、プログラミングの練習でもないのに全てのPCで毎回同じ値を出すアルゴリズムを書くなんて非効率ですから。
又、コードはコードタグで囲ってください。
フィボナッチ数列が何か分かっていますか?
フィボナッチ数列は、前の数+その前の数 の数列です。
例えば、1,1,2,3,5・・・
つまり、ループ内で配列の要素に1つ前と2つ前の要素を足したものを入れればいいのです。
霊:iがループカウンタ の様な感じです。
また、while文の中と前に を書くのではなく、必ず一回実行してから条件によってループするdo~while文を使ったらどうでしょうか? 霊:ループ処理を行う→条件があっていたら→ループ処理を行う...
そして、条件式は入力された値のnが1~30でない場合です。
頑張ってください。
追記:
上のDixqさんの方法(手書き)もいいと思います。
もし、プログラミングの練習でもないのに全てのPCで毎回同じ値を出すアルゴリズムを書くなんて非効率ですから。
Re: 配列
まず、30番目まで計算しないと行けないのに、fibは23要素しかないので、この配列は使えないダミーですね。
例えばこのようにするといいでしょう。
例えばこのようにするといいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 配列
すいません、「配列fibに格納した後」という条件を見落としていました。よわい さんが書きました:フィボナッチ数列を30番目まで計算して配列fibに格納した後
ついでに警告対策の修正も行いました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)