teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

プログラムを変更

2021/07/31 10:30

投稿

linkinpark
linkinpark

スコア42

title CHANGED
File without changes
body CHANGED
@@ -30,6 +30,7 @@
30
30
  よろしくお願いします。
31
31
 
32
32
  追記部分
33
+ c=?????この??の部分だけいじるだけで実現して頂きたいです。
33
34
  ```C
34
35
  コード
35
36
  #include <stdio.h>

2

プログラムを追加

2021/07/31 10:30

投稿

linkinpark
linkinpark

スコア42

title CHANGED
File without changes
body CHANGED
@@ -27,4 +27,40 @@
27
27
  できるようにしたいです。
28
28
  ((double)(n-k+i))/((double)(k-i+1))*(double)c;のようにキャスト変更したりしたのですが
29
29
  うまく値が出力されませんでした。どなたかわかる方がいらしたら教えて頂きたいです。
30
- よろしくお願いします。
30
+ よろしくお願いします。
31
+
32
+ 追記部分
33
+ ```C
34
+ コード
35
+ #include <stdio.h>
36
+ #include <stdlib.h>
37
+ #include <string.h>
38
+
39
+ long combination(int n,int k){
40
+ int i;
41
+ long c=1;
42
+ for(i=1;i<=k;i++){
43
+ c=((double)(n-k+i))/((double)(k-i+1))*(double)c;
44
+ }
45
+ return c;
46
+ }
47
+
48
+ int main(void){
49
+ int n,k;
50
+ printf("plase input n ");
51
+ scanf("%d",&n);
52
+ printf("please input k ");
53
+ scanf("%d",&k);
54
+ printf("combination(%d,%d)=%ld\n",n,k,combination(n,k));
55
+ return 0;
56
+ }
57
+ ```
58
+ 実行結果
59
+ plase input n 13
60
+ please input k 5
61
+ combination(13,5)=546
62
+
63
+ 参考までに上のコードの結果
64
+ plase input n 13
65
+ please input k 5
66
+ combination(13,5)=1287.000000

1

プログラムを変更

2021/07/31 10:23

投稿

linkinpark
linkinpark

スコア42

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
  int i;
9
9
  double c=1;
10
10
  for(i=1;i<=k;i++){
11
- c=(n-k+i)/(k-i+1)*c;
11
+ c=(double)(n-k+i)/(double)(k-i+1)*c;
12
12
  }
13
13
  return c;
14
14
  }