我需要使用类Dice编写用于滚动骰子的C程序。主要要求是我需要使用这个main,编辑它:
int main()
{
Dice* ptrDice;
???
for (int i = 0; i < 5; i++)
{
???? // roll the 5 dice
???? // print the outcome
}
}
我在这里无法获得如何使用指针。任何人都可以帮忙吗?!
这是我的代码,但它不起作用:(
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
class Dice{
public:
Dice();
int getNums();
void Roll();
private:
int nNums;
};
Dice::Dice(){
nNums=5;
}
int Dice::getNums()
{
return nNums;
}
void Dice::Roll()
{
nNums = rand()%6 + 1;
}
int main()
{
Dice* ptrDice = new Dice;
ptrDice -> getNums();
for (int i = 0; i < 5; i++)
{
getNums[i] = rand()%6 + 1; // roll the 5 dice
cout << "You rolled: ";
cout << ptrDice->getNums() << setw(4);
cout << endl; // print the outcome
}
}
我的主要麻烦是使用那个ptrDice并在main函数中打印它,我猜!
答案 0 :(得分:1)
你使这变得比它需要的更复杂。
一个简单的Dice对象不需要数据成员,只需要一个成员函数。如果你正在使用rand()函数,构造函数应该使用srand(seed)为随机数生成器播种。 Roll()函数应该返回作为int滚动的数字。您根本不需要getNums()函数,只会在定义类时返回5。
class Dice() {
public:
int roll() { return rand() % 6 + 1; }
};
...
int main() {
Dice* ptrDice = new Dice;
for (int i=0; i<5; i++) {
cout << "You rolled" << ptrDice->roll() << '\n';
}
delete ptrDice;
}
您可以扩展此类以模拟具有任意数量边的多个骰子。然后你可以使用整数数据成员来保留骰子的数量和它们的边数。