на этот раз я написал программу для себя, но я просто хочу убедиться, что я все сделал правильно, и если у кого-то есть какие-либо предложения по ее улучшению в любом случае
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;
}
Задача ещё не решена.
Других решений пока нет …