サイコロを振るプログラムはほぼ完成しましたが、唯一の問題は、指定した配列のサイズが原因で、5000 を超えるサイコロを入力できないことです。単純に配列のサイズをばかげた数に増やすことができると思いますが、入力に基づいて動的にサイズ変更された配列を使用するのではなく、代わりに使用したいと思いremainingRolls.
ます。
注: これは、機能する編集済みの最終的なコードです。
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
int roller(){ // loop to simulate dice roll
int die1, die2;
int total;
die1 = rand()%6+1;
die2 = rand()%6+1;
total=die1+die2;
return total;
}
int main(){
int numberOfRolls;
int remainingRolls;
int eights=0; // declare counter array to hold frequencies of dice results
int i;
int value;
float percentage;
int currentRoll; // declare array for dice values
currentRoll= 0;
cout << "How many times will the dice be rolled?" << endl;
cin >> remainingRolls;// user input # of dice rolls
numberOfRolls = remainingRolls;// variable to hold number of rolls (for output)
for (i=0; remainingRolls >0; remainingRolls--){// loop to count frequency of each value
currentRoll = roller();// activate diceRoll function
if (currentRoll == 8){
eights++;
}
}
percentage = (eights*100/numberOfRolls);
cout << "The dice were rolled " << numberOfRolls << " times." << endl;
cout << "The value 8 came up " << eights << " times or " << percentage << "% of the time." << endl;
getch();
return 0;
}