Visual C++ 2005でプログラムをしている初心者です。おそらく基本的な間違いをしていると思います。
次の様にプログラムしたところ、
/*賽を四回振ると?*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int b[4], i, j;
double o[4], x, c[4];
printf("試行回数を入れてください。\n");
scanf_s("%d",&x);
for(i=0; i<4; i++){
c[i]=0;
}
for(i=0; i<x; i++){
for(j=0; j<4; j++){
srand(time(NULL));
b[j]=rand()%6+1;
}
if(b[0]==b[1]==b[2]==b[3]==1){
c[0]=c[0]+1;
}
else if(b[0]==1||b[1]==1||b[2]==1||b[3]==1){
c[1]=c[1]+1;
}
else if( b[0]!=b[1] && b[0]!=b[2] && b[0]!=b[3] && b[1]!=b[2] && b[1]!=b[3] && b[2]!=b[3] ){
c[2]=c[2]+1;
}
else{
c[3]=c[3]+1;
}
}
for(i=0; i<4; i++){
o[i]=x/c[i];
}
printf("四つの賽を%d回、投げたところ・・・・・・\n",x);
printf("四つとも1の場合は%d回となり、倍率は%lfとなりました。\n",c[0],o[0]);
printf("1がある場合は%d回となり、倍率は%lfとなりました。\n",c[1],o[1]);
printf("1以外のぞろ目がある場合は%d回となり、倍率は%lfとなりました。\n",c[3],o[3]);
printf("ブタの場合は%d回となり、倍率は%lfとなりました。\n",c[2],o[2]);
}
何度やっても次の様な結果になります(1296は入力値です)
試行回数を入れてください。
1296
四つの賽を1296回、投げたところ・・・・・・
四つとも1の場合は0回となり、倍率は0.000000となりました。
1がある場合は0回となり、倍率は0.000000となりました。
1以外のぞろ目がある場合は0回となり、倍率は0.000000となりました。
ブタの場合は0回となり、倍率は0.000000となりました。
続行するには何かキーを押してください . . .
予定としては
試行回数を入れてください。
1296
四つの賽を1296回、投げたところ・・・・・・
四つとも1の場合は1回となり、倍率は1296となりました。
1がある場合は670回となり、倍率は1.94となりました。
1以外のぞろ目がある場合は505回となり、倍率は2.57となりました。
ブタの場合は120回となり、倍率は10.8となりました。
続行するには何かキーを押してください . . .
位の結果が出ると思うのですが(計算が間違ってなければ)。
No.1ベストアンサー
- 回答日時:
まず、scanf_s, printfの書式が間違っています。
%dとあるところは全て%lfに直してください。
> for(i=0; i<x; i++){
> for(j=0; j<4; j++){
> srand(time(NULL));
> b[j]=rand()%6+1;
srandは最初の一回だけ実行すればいいです。
そのプログラムを実行すると、あっという間に結果が表示されると思いますが、早すぎてtimeの値が変化しない、つまりいつも同じ値の乱数しか発生しません。
上の二つを直しても、if文の条件が間違っているので思った結果は出ません。
どこが間違っているか考えてみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語 3 2022/10/04 15:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
テキストカーソル位置の取得
-
4の倍数を論理演算で表す。。
-
C言語 プログラミング
-
cshの文字列操作(0埋め)
-
unsigned int型について
-
C言語での組み合わせの問題につ...
-
(構造体)双方向連結リストの作成!
-
c言語でAからZまでを表示する...
-
strcmp
-
srand(time(NULL))の使い方
-
C言語のソースをC++言語に変換...
-
(C言語)西暦年月日を入力して...
-
答えを教えてください
-
scanfに文字が入力されたときに...
-
C言語についてです学籍番号、名...
-
c言語で2000年以降カレンダーを...
-
printfのコードは?
-
hit&bolwのプログラミングがで...
-
おみくじプログラムですがじっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
コンパイルエラーについて
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報