task3Bpre.cpp

URL: https://mirkwood.cs.edinboro.edu/~bennett/class/cmsc2040/fall2026/notes/dice/code/task3Bpre.cpp
 
#include <iostream>
#include <iomanip>

using namespace std;

struct DieT {  
    int sides{6};
    unsigned int seed{1};
    int value;
};

void RollDieAndPrint(DieT dieA, DieT dieB);

void InitDie(DieT & die, int sides);
int GetDieValue(const DieT & die);
int GetDieSides(const DieT & die);
void RollDie(DieT & die);

int main() {

   srand(static_cast<int>(time(nullptr)));

   DieT die1,
        die2;

   InitDie(die1,6);
   InitDie(die2,6);

   cout << "Die 1 then  Die 2" << endl;
   RollDieAndPrint(die1, die2);
   cout << endl;
   cout << "Die 2 then Die 1" << endl;
   RollDieAndPrint(die2, die1);

   return 0;
}

void InitDie(DieT & die, int sides){
    if (sides > 1 and sides <= 100) {
        die.sides = sides;
    }
    die.seed = static_cast<unsigned int>(rand());
    RollDie(die);
}

int GetDieValue(const DieT &  die){
    return die.value;
}

int GetDieSides(const DieT & die) {
    return die.sides;
}

void RollDie(DieT & die)  {
    die.value = rand_r(&die.seed) % die.sides + 1;
}


void RollDieAndPrint(DieT dieA, DieT dieB){

   for(int i = 0; i < 10; ++i) {
      RollDie(dieA);
      RollDie(dieB);
      cout << setw(20) << GetDieValue(dieA)
           << setw(20) << GetDieValue(dieB) << endl;
   }
}