класс — композиция с ++, я делаю это правильно?

на этот раз я написал программу для себя, но я просто хочу убедиться, что я все сделал правильно, и если у кого-то есть какие-либо предложения по ее улучшению в любом случае

a) Определите и реализуйте класс Die, изображенный на следующей UML-диаграмме, чтобы создать ADT для одного штампа (единственного числа кубиков) с гранями, показывающими значения от 1 до numberOfFaces на кристалле. Определите двухпараметрический конструктор со значениями по умолчанию 6 граней и 1 для номинала. Определите и внедрите метод roll () для имитации вращения матрицы, генерируя случайное число между 1 и numberOfFaces и сохраняя это число в faceValue. Предоставьте метод доступа для возврата номинальной стоимости матрицы и метод print () для печати номинальной стоимости матрицы.

б) Используйте композицию для разработки класса PairOfDice, состоящего из двух шестигранных объектов Die. Создайте программу-драйвер с функцией main (), чтобы бросить объект PairDice 1000 раз, подсчитав и затем отобразив количество возникающих змеиных глаз (то есть двух) и ящиков (то есть двух шестерок).

die.h

#ifndef DIE_H
#define DIE_H

class die {

private:
int numberOfFaces;
int faceValue;
public:
die();
die(int, int);
int roll();
void print();

};
#endif

die.cpp

#include "die.h"#include<iostream>
#include<ctime>
#include<random>
using namespace std;

die::die()
{
numberOfFaces=6;
faceValue=1;
}

die::die(int numOfFaces, int faceVal)
{
numberOfFaces=numOfFaces;
faceValue=faceVal;
}

int die::roll()
{
faceValue=rand()%numberOfFaces;
return faceValue;
}

void die::print()
{
cout << faceValue << endl;
}

pairOfDice.h

#include "die.h"#ifndef PAIROFDICE_H
#define PAIROFDICE_H

class pairOfDice :
public die
{
private:
die die1;
die die2;
int value1;
int value2;
int total;
public:
pairOfDice();
int roll();
};

#endif

pairOfDice.cpp

#include "pairOfDice.h"
pairOfDice::pairOfDice()
:die(6,1)
{
value1=1;
value2=1;
total=value1+value2;
}

int pairOfDice::roll()
{
value1=die::roll();
value2=die::roll();
total=value1+value2;
return total;
}

main.cpp

#include"pairOfDice.h"#include<iostream>
using namespace std;

int main()
{
int rolls=0, total=0, snakeEyes=0, boxCars=0;
pairOfDice dice;

while(rolls<1000)
{
total = dice.roll();

if(total==2)
snakeEyes++;
else if(total==6)
boxCars++;
else
rolls++;
}

cout << rolls << " " << snakeEyes << " " << boxCars << endl;
system("pause");
return 0;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector