2013-11-13 2 views
-1

Мне нужно написать программу C для прокатки костей с использованием класса Dice. Основное требование заключается в том, что мне нужно использовать эту магистраль, его редактирование:Класс Rolling Dice program

int main() 
{ 
     Dice* ptrDice; 
      ??? 
     for (int i = 0; i < 5; i++) 
     { 
      ????    // roll the 5 dice 
      ????    // print the outcome 
     } 
} 

Я просто не могу, как использовать указатели здесь. Может ли кто-нибудь помочь, PLS ?!

Вот мой код, но он не работает :(

#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 и печать в основной функции, я думаю!

+1

Почему бы не прочитать лекционные заметки? –

+1

Помимо отличной генерации случайных чисел, я думаю, что у вас есть вся реализация. Но вы неправильно вызываете необходимые функции-члены. Например, подумайте, почему существует 'Dice :: Roll()'? – Mahesh

+0

Вам необходимо написать * C++ * программу. Эти два варианта не совпадают. – Sinkingpoint

ответ

1

Вы делаете это более сложный чем это должно быть.

Простой объект Dice не требует элементов данных и только одна функция-член. Если вы используете функцию rand(), конструктор должен засеять генератор случайных чисел с помощью srand (seed). Функция Roll() должна возвращать число, свернутое как n 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; 
} 

Вы могли бы расширить этот класс, чтобы имитировать несколько кубиков с любым числом сторон. Затем вы можете использовать целочисленные элементы данных, чтобы сохранить количество костей и их количество сторон.

+0

Работает сейчас! Большое спасибо! – user2884834