J'écris un programme pour simuler un jet de dés avec une fonction aléatoire. Ceci est mon code, mais j'ai une boucle infinie. Le programme est censé demander à l'utilisateur combien de fois ils aimeraient lancer les dés. Ensuite, j'ai utilisé une boucle for pour lancer les dés de 0 à et j'ai mis tout cela dans un do-while afin de permettre seulement à l'utilisateur de choisir entre 1 et 6, si la sélection est en dehors de 1 à 6 est censé dire que c'est une sélection invalide. Je ne suis pas autorisé à utiliser des fonctions ou des tableaux sur cesimulation de lancer de dés unique avec C++
#include<iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
//i is the counter for the loop
int i = 0;
//store total count for landing number
int num1 =0;
int num2 =0;
int num3 =0;
int num4 =0;
int num5 =0;
int num6 =0;
int Num1 =0;
int Num2 =0;
int Num3 =0;
int Num4 =0;
int Num5 =0;
int Num6 =0;
int randNum;
int times;
//User selection
int selection;
/* initialize random seed: */
srand ((unsigned int)time(NULL));
/* generate random number: */
randNum = rand() % 6 + 1;
cout<<"How many times would you like to roll the dice? " << endl;
cin >> selection;
do{
for(i = 1; i <= selection; i++)
{
if(randNum==1)
{
num1++;
}
else if(randNum==2)
{
num2++;
}
else if(randNum==3)
{
num3++;
}
else if(randNum==4)
{
num4++;
}
else if(randNum==5)
{
num5++;
}
else if(randNum==6)
{
num6++;
}
}
Num1 = num1/times *100;
Num2 = num2/times *100;
Num3 = num3/times *100;
Num4 = num4/times *100;
Num5 = num5/times *100;
Num6 = num6/times *100;
cout <<"# Rolled \t # Times \t % Times" << endl;
cout <<"----- \t ------- \t -------" << endl;
cout <<" 1 \t " << num1 << "\t " << fixed << setprecision(2) << Num1 << "%\n";
cout <<" 2 \t " << num2 << "\t " << fixed << setprecision(2) << Num2 << "%\n";
cout <<" 3 \t " << num3 << "\t " << fixed << setprecision(2) << Num3 << "%\n";
cout <<" 4 \t " << num4 << "\t " << fixed << setprecision(2) << Num4 << "%\n";
cout <<" 5 \t " << num5 << "\t " << fixed << setprecision(2) << Num5 << "%\n";
cout <<" 6 \t " << num6 << "\t " << fixed << setprecision(2) << Num6 << "%\n";
}
while(i >= 1 || i <= 6);
{
cout << "This is an invalid number. \n"
<< "The number of rolls should be equal to or greater than 1.\n"
<< "Please enter again.\n";
}
}
Semble que vous voulez vérifier une entrée valide avant de faire tout le travail et la production. Vous pourriez considérer un tableau pour les comptes, ce serait un code beaucoup plus simple. 'times 'n'est pas initialisé lorsque vous l'utilisez, et maths entières va vous donner des valeurs incorrectes. Vous pourriez également mettre les dés à l'intérieur de la boucle for. –
Et quand vous avez utilisé votre débogueur pour exécuter votre code, une ligne à la fois, quelle était la raison pour laquelle le code exécuter votre "boucle infinie"? –
Salut, je ne suis pas autorisé à utiliser tableau ou fonction pour ce code – codeeeeeNOT