C言語です。
今パスカルの三角形を用いて(二次元配列を使う)nCrの値を求めるプログラムを作っているのですが、値を計算させる関数calがおかしいのか、実行しても値が0という数字にしかなりません。
どなたかご指摘をお願いします。
以下、ソースプログラムです。(main等は除きます)
int cal(int n, int r){
int p[100][100], i ,j;
for(i =0; i<n; i++){
for(j = 0; j<r-i; r++){
if(i == 0 ┃┃ j == 0)
p[i][j] = 1;
else
p[i][j] = p[i-1][j] + p[i][j-1];
}
}
return p[n][r];
}
見にくいかも知れませんが、携帯からの投稿なのでお許しください。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
実装言語が何であるかは関係ありません。
そしてプログラムは作られているとおりに動きます。思った通りには動きません。
ということでアルゴリズムをしっかり確認しましょう。プログラム言語ではなく日本語で。
ちなみにパッと目の疑問として、2段目のforループはrをインクリメントして回っていますがこれでよいのでしょうか?
あと、配列pはこの関数内で定義するのではなく入力引数(呼び出し元がmain()ならmainで領域を確保し、その2次元配列のポインター渡し)なのでは?
参考まで。
No.2
- 回答日時:
思い込みを捨てて、現状どんなプログラムになっているかを確かめてみましょう。
return の前に
for(i =0; i<=n; i++){
printf("%3d:",i):
for(j = 0; j<=n; j++){
if(i==n && j==r) {
printf("[%3d]",p[i][j]):
}else{
printf(" %3d ",p[i][j]):
}
printf("\n"):
とでも置いて
・pがパスカルの三角形になっているか?
・p[n][r]は、その表の何処なのか
を調べてみましょう。
No.3
- 回答日時:
ぱっとみ、iもjもnやrに達しないのだから
return p[n][r];
で答えが返るわけないよね。
jの回し方も意味不明。
まずrを絡めずに回すアルゴリズムを
考えましょう。
No.4
- 回答日時:
取りあえず正しい cal
int cal(int n, int r){
int p[100][100], i ,j;
for(i=0; i <= n; i++) {
for(j=0; j <= i; j++) {
if (j == 0 || j == i)
p[i][j]=1;
else
p[i][j]=p[i-1][j-1]+p[i-1][j];
}
}
return p[n][r];
}
No.5
- 回答日時:
ちなみに、元ソースを見ると、「n行目r列目の特定の値を返したい」ように見えるんで、特にパスカルの三角形「そのもの」は返さなくても良いように見えます。
二次元配列を使わないで済むのなら、次のようにcalを定義する事が可能です。
int cal(int n, int r) {
/* ここでパスカルの三角形の定義をそのまま書く */
if (r == 0 || r == n)
return 1;
else
return cal(n-1, r-1) + cal(n-1, r);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
白血球が多いとどんな心配があ...
-
腕を見たら黄色くなってる部分...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
精子が黄色?
-
勃起する時って痛いんですか? ...
-
尿検査前日に自慰行為した時の...
-
尿検査の前日は自慰控えたほう...
-
口の中に黒い血の塊
-
これって喉仏ですか? 私は女性...
-
精子に血が・・・
-
中出しをするとお腹が痛い・・・。
-
納豆食べた後の尿の納豆臭は何故?
-
甲状腺腫れ
-
EXCELで式からグラフを描くには?
-
EXCELで条件付き書式で空白セル...
-
筋トレするとチンコが縮んじゃ...
-
爪が紫色?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報
2つ目のfor文の中で、rをインクリメントしてますが、ここはjです。