-4
編集:ゲームの名前はクラップスのゲームであり、クラップスではありません。 助けようとした皆さん、私はctrl = 1代入をforループに入れるのを忘れていました。スイッチケースステートメントでは、結果が与えられていません
私はこの大げさなゲームから欲しい結果を得ることができません。ここでは、コードは次のとおりです。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int rolldice();
int main() {
srand(time(NULL));
int n;
float winrate;
float lossrate;
long int i;
long int ctrw,ctrloss;
ctrw= 0;
ctrloss= 0;
int ctrl= 1;
for(i=0;i<100000;i++) {
while(ctrl!=0) {
n= rolldice();
switch(n) {
case 7:
case 11:
ctrw++;
ctrl= 0;
break;
case 2:
case 3:
case 12:
ctrloss++;
ctrl= 0;
break;
default:
ctrl= 1;
break;
}
}
}
winrate= (float)ctrw/i * 100.0;
lossrate= (float)ctrloss/i * 100.0;
printf("Win rate is %.2f, loss rate is %.2f.",winrate,lossrate);
system("pause");
return 0;
}
int rolldice() {
int a= (rand()%6)+1;
int b= (rand()%6)+1;
return a+b;
}
見られるように、私はそれを100000回プレイすることで、このゲームの勝敗率を計算しようとしています。しかし、これは印刷されます:勝率は0.00、損失率は0.00です。 おそらく簡単な間違いですが、見つけられず、それ以上の時間を失いたくはありません。
より短いループから始めて、デバッガでコードを1行ずつ進んで、何が起こり、何が起こっているのかを確認します。そして、Eric Lippertによる[小さなプログラムのデバッグ方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を読んでください。 –
私はこのゲームがクラップスだと信じています。 crapはまったく別のゲームです – pm100
forループ内で 'ctrl'を' 1'にリセットする必要があります。 –