#include<stdio.h>
int main()
{
int n;
int m;
int i;
int kumi;
int san;
printf("n:");
scanf("%d",&n);
printf("m:");
scanf("%d",&m);
for(kumi=1,i=n;i>n-m+1;i--){
kumi=kumi*i;
}
for(san=1,i=1;i<=m;i++){
san=san*i;
}
printf("%d個の中から%d個を取り出す組み合わせは%dとおり\n",n,m,kumi/san);
return 0;
}
組合わせの値がおかしいです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
2箇所気になる点があります。
1.最初のforループ
i=n~n-m+1までのm個についてこのループを実行するためには
for(i=n;i>n-m;i--)
でないといけません。tomo_ko_nさんのコードだと、i=n-m+1の場合はループが実行されません。
2.オーバーフローへの対処
nやmをある程度の数にすると簡単にオーバーフローします。
そのチェックはしておいたほうが良いでしょう。
#1にあるように掛け算と割り算を同じループ内で実行するとオーバーフローを起こしにくくなります。
また、m>n/2の場合は、m=n-mとしてから計算するとより速く計算できます。
No.2
- 回答日時:
「おかしい」とは「何がどのようにおかしい」のでしょうか?
具体的な例で, 「このような入力に対してこう期待されるのにこんなのが出てきた」と書いてみてください.
#1 は超能力者か?
No.1
- 回答日時:
#include <stdio.h>
int main(void)
{
int combi, n, m, t, i;
do {
printf("n:"), scanf("%d", &n);
printf("m:"), scanf("%d", &m);
} while (n < m || m < 0);
for (combi = i = 1, t = n; i <= m; n--, i++) {
combi *= n;
combi /= i;
}
printf("%d個の中から%d個を取り出す組み合わせは%dとおり\n", t, m, combi);
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
C言語プログラムが理解できなくて…
-
#if 1 #elseの意味について
-
行列をべき乗させるプログラム
-
配列を使って魔方陣
-
getcの改行判定
-
C言語で電卓を作成する。
-
c言語のプログラムで
-
中央値をもとめる
-
for文の中にswitch文はいれられ...
-
xのy乗を求める問題で…(ただし...
-
C言語 数字以外を入力させない...
-
初心者です。for文、if文を使っ...
-
教えてください
-
C言語についてですfor ifをつか...
-
プログラミング for文
-
while文について、c言語...
-
MATLABの繰り返し文を用いたプ...
-
c言語プログラミングで1から100...
-
C言語の二分法のプログラムにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
C言語階乗の総和を求める
-
配列を使って魔方陣
-
C言語 数字以外を入力させない...
-
C言語プログラムが理解できなくて…
-
配列を関数に渡す方法
-
初心者です。for文、if文を使っ...
-
scanf関数を用いての加減乗除%...
-
c言語プログラミングで1から100...
-
while文について、c言語...
-
getcの改行判定
-
プログラミングで二番目に大き...
-
VHDLで、case文とwhen文のどち...
-
C言語で電卓を作成する。
-
C言語の二分法のプログラムにつ...
-
プログラミングに関して
-
階乗のプログラム!!
-
C言語についてですfor ifをつか...
おすすめ情報