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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
c言語の配列を使ってサイコロを100回振って1から6の目が何回出たかを表示するプログラムはどのように
C言語・C++・C#
-
c言語のサイコロを100回振ってこの結果を表示するプログラムはどうなりますか?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンパイルエラーについて
-
printf で二進表示を行いたい。
-
cshの文字列操作(0埋め)
-
テキストカーソル位置の取得
-
【C言語教えてください】sin波...
-
10個出力で改行したいのですが...
-
4の倍数を論理演算で表す。。
-
コマンドラインに出力した文字...
-
strcmp
-
c言語でAからZまでを表示する...
-
printfの出力内の文字をdefine...
-
WM_CLOSEで閉じれないウィンド...
-
三角形の判別
-
%P と %X の違い
-
台形の面積を求めるプログラム
-
switch分のケースを範囲数?に...
-
wsprintfの書式制御文字列につ...
-
(C言語)めちゃくちゃな値にな...
-
error C2143: 構文エラー : ';'...
-
円の面積を求めるプログラミン...
おすすめ情報