2017-07-11 13 views
-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です。 おそらく簡単な間違いですが、見つけられず、それ以上の時間を失いたくはありません。

+2

より短いループから始めて、デバッガでコードを1行ずつ進んで、何が起こり、何が起こっているのかを確認します。そして、Eric Lippertによる[小さなプログラムのデバッグ方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を読んでください。 –

+3

私はこのゲームがクラップスだと信じています。 crapはまったく別のゲームです – pm100

+1

forループ内で 'ctrl'を' 1'にリセットする必要があります。 –

答えて

3

あなたがゲームを再起動このように

for(i=0;i<100000;i++) { 
    ctrl = 1;    // Restart the game 
    while(ctrl!=0) { 

にこの

for(i=0;i<100000;i++) { 
    while(ctrl!=0) { 

を変更する必要があります。あなたがしなければ、試合が最初に成功した後、試合は終わってしまいます。

関連する問題