我无法从我的代码中得到正确的结果,得到奇怪的输出
I cant get the right result from my code, getting odd outputs
我正在尝试编写一个骰子算法并计算我的骰子可以掷出的每个数字的数量,但得到奇怪且错误的结果。这段代码有什么问题。
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
cout << "Enter the number of dice: ";
int n;
int number[5];
int dice;
cin >> n;
for (int i = 0; i < n; i++) {
dice = (rand() % 6) + 1;
cout << dice << " ";
if (dice == 1) {
number[0] += 1;
}
else if (dice == 2) {
number[1] += 1;
}
else if (dice == 3) {
number[2] += 1;
}
else if (dice == 4) {
number[3] += 1;
}
else if (dice == 5) {
number[4] += 1;
}
else if (dice == 6) {
number[5] += 1;
}
}
for (int i = 0; i < 6; i++) {
cout << "\nThe number of dice " << i + 1 << "is: " << number[i] << "\n";
}
}
第一,是不是更简单,更容易做
number[dice-1]++;
而不是 6 个如果。
要解决这个问题,你必须在 Main 之前移动数字数组(如果你在 Main 中声明它,它里面有随机数),你也可以在 运行 第一次循环之前这样做,而不是替换数组声明。
for (int i=0; i<6; i++)
numbers[i]=0;
下面是工作代码:
#include <iostream>
using namespace std;
int n, dice, number[6];//Declaring variables here makes them have 0 instead of random value
int main(int argc, char **argv) {
//Declaring variables here makes them have random value
/*
Here it should look like this.
int n, dice, number[6];
for (int i=0; i<6; i++)
number[i]=0;
*/
cout<<"Enter the number of dice: ";
cin>>n;
for (int i=0; i<n; i++) {
dice=rand()%6+1;
cout<<dice<<" ";
number[dice-1]++;
}
for (int i = 0; i < 6; i++) {
cout << "\nThe number of dice " << i + 1 << " is: " << number[i] << "\n";
}
}
我正在尝试编写一个骰子算法并计算我的骰子可以掷出的每个数字的数量,但得到奇怪且错误的结果。这段代码有什么问题。
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
cout << "Enter the number of dice: ";
int n;
int number[5];
int dice;
cin >> n;
for (int i = 0; i < n; i++) {
dice = (rand() % 6) + 1;
cout << dice << " ";
if (dice == 1) {
number[0] += 1;
}
else if (dice == 2) {
number[1] += 1;
}
else if (dice == 3) {
number[2] += 1;
}
else if (dice == 4) {
number[3] += 1;
}
else if (dice == 5) {
number[4] += 1;
}
else if (dice == 6) {
number[5] += 1;
}
}
for (int i = 0; i < 6; i++) {
cout << "\nThe number of dice " << i + 1 << "is: " << number[i] << "\n";
}
}
第一,是不是更简单,更容易做
number[dice-1]++;
而不是 6 个如果。
要解决这个问题,你必须在 Main 之前移动数字数组(如果你在 Main 中声明它,它里面有随机数),你也可以在 运行 第一次循环之前这样做,而不是替换数组声明。
for (int i=0; i<6; i++)
numbers[i]=0;
下面是工作代码:
#include <iostream>
using namespace std;
int n, dice, number[6];//Declaring variables here makes them have 0 instead of random value
int main(int argc, char **argv) {
//Declaring variables here makes them have random value
/*
Here it should look like this.
int n, dice, number[6];
for (int i=0; i<6; i++)
number[i]=0;
*/
cout<<"Enter the number of dice: ";
cin>>n;
for (int i=0; i<n; i++) {
dice=rand()%6+1;
cout<<dice<<" ";
number[dice-1]++;
}
for (int i = 0; i < 6; i++) {
cout << "\nThe number of dice " << i + 1 << " is: " << number[i] << "\n";
}
}