+1 (315) 557-6473 

Create a Program to Implement Sorting in C++ Assignment Solution.


Instructions

Objective
Write a program to implement sorting in C++.

Requirements and Specifications

program to implement sorting in C++
program to implement sorting in C++ 1
program to implement sorting in C++ 2
program to implement sorting in C++ 3
program to implement sorting in C++ 4
program to implement sorting in C++ 5
program to implement sorting in C++ 6
program to implement sorting in C++ 7
program to implement sorting in C++ 8
program to implement sorting in C++ 9
program to implement sorting in C++ 10
program to implement sorting in C++ 11
program to implement sorting in C++ 12
program to implement sorting in C++ 13
program to implement sorting in C++ 14
program to implement sorting in C++ 15

Source Code

// libraries

#include "yahtzee.h"

enum scores {

one,

two,

three,

four,

five,

six,

threekind,

fourkind,

fullhouse,

smstraight,

lgstraight,

yahtzee,

chance

};

// main function

int main()

{

// while loop control variable

int play = 1;

// seed the random function

srand((unsigned int)time(NULL));

// continue to loop until the player quits or the game ends

while (play)

{

switch (displayGameMenu())

{

case RULES:

// call function gameRules

gameRules();

break;

case GAME:

// call function clearScreen()

clearScreen();

// call function displayRandomDice

// displayRandomDice();

// call function play

playGame();

break;

case EXIT:

printf("Thank you for playing!\n");

play = 0;

break;

default:

printf("Incorrect option, hit enter and try again\n");

char enter;

scanf("%c", &enter);

break;

}

}

// program executed successfully

return 0;

}

// gameRules function displays the Yahtzee and rules of the game

void gameRules()

{

printf("\t\t\t\tLET'S PLAY YAHTZEE!!! \n\n");

printf("RULES OF THE GAME:\n");

printf("\t1. The scorecard used for Yahtzee is composed of an upper section and a lower section.\n");

printf("\t2. A total of 13 scoring combinations are divided amongst the sections. \n");

printf("\t3. The upper section consists of boxes that are scored by summing the value of the dice matching the faces of the box.\n");

printf("\t4. If a player rolls four 3's, then the score placed in the 3's box is the sum of the dice which is 12. \n");

printf("\t5. Once a player has chosen to score a box, it may not be changed and the combination is no longer in play for future rounds.\n");

printf("\t6. If the sum of the scores in the upper section is greater than or equal to 63, then 35 more points are added \n");

printf("\tto the players overall score as a bonus. The lower section contains a number of poker like combinations.\n");

}

// function displayExplicitDice displays a hardcoded version of a rolled dice

void displayExplicitDice()

{

printf("|---------------------------------------|\n");

printf("| | | | | |\n");

printf("| 1 | 2 | 3 | 4 | 5 |\n");

printf("| | | | | |\n");

printf("|---------------------------------------|\n");

}

// function displayRandomDice displays a randomly generated dice for three rolls

void displayRandomDice()

{

// looping variable

int roll;

int die1;

int die2;

int die3;

int die4;

int die5;

for (roll = 0; roll < ROLLS; roll++)

{

die1 = rollDie();

die2 = rollDie();

die3 = rollDie();

die4 = rollDie();

die5 = rollDie();

printf("|---------------------------------------|\n");

printf("| | | | | |\n");

printf("| %d | %d | %d | %d | %d |\n", die1, die2, die3, die4, die5);

printf("| | | | | |\n");

printf("|---------------------------------------|\n");

}

}

// clears the screen

void clearScreen()

{

printf("\n\t\t\t\tHit to continue!\n");

char enter;

scanf("%c", &enter);

// send the clear screen command Windows

system("cls");

// send the clear screen command for UNIX flavor operating systems

// system("clear");

}

// presents a menu to the player

int displayGameMenu()

{

int select = 0;

do

{

printf("\n\n\t\t\t\tLET'S PLAY YAHTZEE!!! \n\n");

printf("%d. Display Game Rules\n", RULES);

printf("%d. Start a game of Yahtzee\n", GAME);

printf("%d. Exit\n", EXIT);

scanf("%d", &select);

} while ((select < RULES) && (select > EXIT));

return select;

}

// randomly rolls a die

int rollDie()

{

int dieValue = 0;

dieValue = rand() % 6 + 1;

return dieValue;

}

void initializeDice(int dice[DICE])

{

int die;

for (die = 0; die < DICE; die++)

{

dice[die] = 0;

}

}

void playGame()

{

int roll;

int turn;

int dice[DICE];

int keep[DICE];

int scoreCard[13][2];

int category;

initializeScores(scoreCard);

// continue to loop until game is over

for (turn = 0; turn < TURNS; turn++)

{

int current = turn + 1;

printf("Turn %d of game\n\n", current);

// for each turn reset the keep[] and dice arrays

initializeDice(dice);

resetKeep(keep);

// one turn

for (roll = 0; roll < ROLLS; roll++)

{

printf("Rolling the dice...\n");

rollDice(dice, keep);

displayDice(dice);

if (roll < 2)

selectDice(dice, keep);

}

category = selectCategory();

updateScores(scoreCard, category, dice);

displayScoreCard(scoreCard);

}

}

int displayDice(int dice[DICE])

{

int die;

die = 0;

char enter;

printf("+-------+ +-------+ +-------+ +-------+ +-------+\n");

printf("| | | | | | | | | |\n");

for (die = 0; die < DICE; die++)

{

printf("| %d | ", dice[die]);

}

printf("\n");

printf("| | | | | | | | | |\n");

printf("+-------+ +-------+ +-------+ +-------+ +-------+\n");

return scanf("%c", &enter);

}

void resetKeep(int keep[DICE])

{

int die;

// loop through the five dice

for (die = 0; die < DICE; die++)

{

// set each die to 0 meaning false

keep[die] = 0;

}

}

void rollDice(int dice[DICE], int keep[DICE])

{

int die;

// loop through the five dice

for (die = 0; die < DICE; die++)

{

// only roll dice that have not been selected to keep

if (keep[die] == 0)

{

dice[die] = rollDie();

}

}

}

void initializeScores(int scoreCard[13][2])

{

int row;

int col;

for (row = 0; row < 13; row++)

for (col = 0; col < 2; col++)

scoreCard[row][col] = 0;

}

int selectCategory() //Options for player to choose the category for their dice

{

int select;

select = 0;

printf(" Select category for dice\n");

printf("1. Ones\n");

printf("2. Twos\n");

printf("3. Threes\n");

printf("4. Fours\n");

printf("5. Fives\n");

printf("6. Sixes\n");

printf("7. Three of a kind\n");

printf("8. Four of a kind\n");

printf("9. Full house\n");

printf("10. Small straight\n");

printf("11. Large straight\n");

printf("12. Yahtzee\n");

printf("13. Chance\n");

scanf("%d", &select);

return select;

}

void selectDice(int dice[DICE], int keep[DICE]) //Screen selection for player to pick desired dice to keep

{

int die = 0;

char data[20];

char *value;

int valid = 0;

resetKeep(keep);

printf("Select dice to keep, enter values 1 through 5 with spaces between numbers\n");

fgets(data, 10, stdin);

value = strtok(data, " ");

while (value != NULL)

{

valid = 0;

while (!valid) {

switch (*value)

{

case '1':

keep[0] = 1;

valid = 1;

break;

case '2':

keep[1] = 1;

valid = 1;

break;

case '3':

keep[2] = 1;

valid = 1;

break;

case '4':

keep[3] = 1;

valid = 1;

break;

case '5':

keep[4] = 1;

valid = 1;

break;

default: /* ignores invalid characters */

continue;

}

}

value = strtok(NULL, " ");

}

}

void updateScores(int scoreCard[13][2], int category, int dice[DICE])

{

switch (category)

{

case ONE:

printf("Scoring Ones...\n");

scoreCard[one][COL] = sumCategory(dice, category);

break;

case TWO:

printf("Scoring Twos...\n");

scoreCard[two][COL] = sumCategory(dice, category);

break;

case THREE:

printf("Scoring Threes...\n");

scoreCard[three][COL] = sumCategory(dice, category);

break;

case FOUR:

printf("Scoring Fours...\n");

scoreCard[four][COL] = sumCategory(dice, category);

break;

case FIVE:

printf("Scoring Fives...\n");

scoreCard[five][COL] = sumCategory(dice, category);

break;

case SIX:

printf("Scoring Sixes...\n");

scoreCard[six][COL] = sumCategory(dice, category);

break;

case THREEKIND:

printf("Scoring Three of a kind...\n");

scoreCard[threekind][COL] = checkThreeKind(dice);

break;

case FOURKIND:

printf("Scoring Four of a kind...\n");

scoreCard[fourkind][COL] = checkFourKind(dice);

break;

case FULLHOUSE:

printf("Scoring Full house...\n");

scoreCard[fullhouse][COL] = checkFullHouse(dice);

break;

case SMSTRAIGHT:

printf("Scoring Small straight...\n");

scoreCard[smstraight][COL] = checkSmStraight(dice);

break;

case LGSTRAIGHT:

printf("Scoring Large straight...\n");

scoreCard[lgstraight][COL] = checkLgStraight(dice);

break;

case YAHTZEE:

printf("Scoring Yahtzee...\n");

scoreCard[yahtzee][COL] = checkYahtzee(dice);

break;

case CHANCE:

printf("Scoring Chance...\n");

scoreCard[chance][COL] = sumChance(dice);

break;

default:

break;

}

}

void displayScoreCard(int scoreCard[13][2])

{

int total;

int grandTotal;

total = sumUpper(scoreCard) + checkBonus(scoreCard);

grandTotal = total + sumLower(scoreCard);

printf(" YAHTZEE SCORECARD \n");

printf("+-----------------+-----------+\n");

displayUpperSection(scoreCard);

displayLowerSection(scoreCard);

printf("| TOTAL (upper) | %d |\n", total);

printf("+-----------------+-----------+\n");

printf("| GRAND TOTAL | %d |\n", grandTotal);

printf("+-----------------+-----------+\n");

}

void displayUpperSection(int scoreCard[13][2]) //displays the upper section of the game score

{

int totalScore;

int bonus;

int total;

totalScore = sumUpper(scoreCard);

bonus = checkBonus(scoreCard);

total = bonus + totalScore;

printf("| UPPER SECTION | SCORE |\n");

printf("+-----------------+-----------+\n");

printf("| ONES | %d |\n", scoreCard[one][COL]);

printf("+-----------------+-----------+\n");

printf("| TWOS | %d |\n", scoreCard[two][COL]);

printf("+-----------------+-----------+\n");

printf("| THREES | %d |\n", scoreCard[three][COL]);

printf("+-----------------+-----------+\n");

printf("| FOURS | %d |\n", scoreCard[four][COL]);

printf("+-----------------+-----------+\n");

printf("| FIVES | %d |\n", scoreCard[five][COL]);

printf("+-----------------+-----------+\n");

printf("| SIXES | %d |\n", scoreCard[six][COL]);

printf("+-----------------+-----------+\n");

printf("| TOTAL SCORE | %d |\n", totalScore);

printf("+-----------------+-----------+\n");

printf("| BONUS | %d |\n", bonus);

printf("+-----------------+-----------+\n");

printf("| SCORE | %d |\n", total);

printf("+-----------------+-----------+\n");

}

void displayLowerSection(int scoreCard[13][2]) //will display the lower section of the game score

{

int total;

total = sumLower(scoreCard);

printf("+-----------------+-----------+\n");

printf("| LOWER SECTION | SCORE |\n");

printf("+-----------------+-----------+\n");

printf("| THREE OF A KIND | %d |\n", scoreCard[threekind][COL]);

printf("+-----------------+-----------+\n");

printf("| FOUR OF A KIND | %d |\n", scoreCard[fourkind][COL]);

printf("+-----------------+-----------+\n");

printf("| FULL HOUSE | %d |\n", scoreCard[fullhouse][COL]);

printf("+-----------------+-----------+\n");

printf("| SM STRAIGHT | %d |\n", scoreCard[smstraight][COL]);

printf("+-----------------+-----------+\n");

printf("| LG STRAIGHT | %d |\n", scoreCard[lgstraight][COL]);

printf("+-----------------+-----------+\n");

printf("| YAHTZEE | %d |\n", scoreCard[yahtzee][COL]);

printf("+-----------------+-----------+\n");

printf("| CHANCE | %d |\n", scoreCard[chance][COL]);

printf("+-----------------+-----------+\n");

printf("| TOTAL (lower) | %d |\n", total);

printf("+-----------------+-----------+\n");

}

int sumCategory(int dice[DICE], int category)

{

int sum;

int die;

sum = 0;

for (die = 0; die < DICE; die++)

if (dice[die] == category)

sum += dice[die];

return sum;

}

int sumChance(int dice[DICE])

{

int sum;

int die;

sum = 0;

for (die = 0; die < DICE; die++)

sum += dice[die];

return sum;

}

int checkLgStraight(int dice[DICE])

{

int sum;

sum = 0;

sortDice(dice);

if (dice[0] == 1 && dice[1] == 2 && dice[2] == 3 && dice[3] == 4 && dice[4] == 5)

sum = 40;

else if (dice[0] == 2 && dice[1] == 3 && dice[2] == 4 && dice[3] == 5 && dice[4] == 6)

sum = 40;

return sum;

}

int checkSmStraight(int dice[DICE])

{

int sum;

sum = 0;

sortDice(dice);

if (dice[0] == 1 && dice[1] == 2 && dice[2] == 3 && dice[3] == 4)

sum = 30;

else if (dice[0] == 2 && dice[1] == 3 && dice[2] == 4 && dice[3] == 5)

sum = 30;

else if (dice[0] == 3 && dice[1] == 4 && dice[2] == 5 && dice[3] == 6)

sum = 30;

if (dice[1] == 1 && dice[2] == 2 && dice[3] == 3 && dice[4] == 4)

sum = 30;

else if (dice[1] == 2 && dice[2] == 3 && dice[3] == 4 && dice[4] == 5)

sum = 30;

else if (dice[1] == 3 && dice[2] == 4 && dice[3] == 5 && dice[4] == 6)

sum = 30;

return sum;

}

int checkYahtzee(int dice[DICE])

{

int sum;

sum = 0;

if (dice[0] == dice[1] && dice[1] == dice[2] && dice[2] == dice[3] && dice[3] == dice[4])

sum = 50;

return sum;

}

int checkFourKind(int dice[DICE])

{

int sum;

sum = 0;

sortDice(dice);

if (dice[0] == dice[1] && dice[1] == dice[2] && dice[2] == dice[3])

sum = dice[0] + dice[1] + dice[2] + dice[3] + dice[4];

else if (dice[1] == dice[2] && dice[2] == dice[3] && dice[3] == dice[4])

sum = dice[0] + dice[1] + dice[2] + dice[3] + dice[4];

return sum;

}

int checkThreeKind(int dice[DICE])

{

int sum;

sum = 0;

sortDice(dice);

if (dice[0] == dice[1] && dice[1] == dice[2])

sum = dice[0] + dice[1] + dice[2] + dice[3] + dice[4];

else if (dice[1] == dice[2] && dice[2] == dice[3])

sum = dice[0] + dice[1] + dice[2] + dice[3] + dice[4];

else if (dice[2] == dice[3] && dice[3] == dice[4])

sum = dice[0] + dice[1] + dice[2] + dice[3] + dice[4];

return sum;

}

int checkFullHouse(int dice[DICE])

{

int sum;

sum = 0;

sortDice(dice);

if (dice[0] == dice[1] && dice[1] == dice[2] && dice[3] == dice[4])

sum = 25;

else if (dice[0] == dice[1] && dice[2] == dice[3] && dice[3] == dice[4])

sum = 25;

return sum;

}

int sumUpper(int scoreCard[CATEGORIES][COLS])

{

int sum;

sum = 0;

for (int i = 0; i < SIX; i++)

sum += scoreCard[i][COL];

return sum;

}

int sumLower(int scoreCard[CATEGORIES][COLS])

{

int sum;

sum = 0;

for (int i = SIX; i < CHANCE; i++)

sum += scoreCard[i][COL];

return sum;

}

int checkBonus(int scoreCard[CATEGORIES][COLS])

{

int sum;

int score;

sum = 0;

score = sumUpper(scoreCard);

if (score >= 63)

sum = 35;

return sum;

}

void sortDice(int dice[DICE])

{

int temp;

int outer;

int inner;

for (outer = 0; outer < DICE - 1; outer++)

{

for (inner = outer + 1; inner < DICE; inner++)

{

if (dice[outer] > dice[inner])

{

temp = dice[outer];

dice[outer] = dice[inner];

dice[inner] = temp;

}

}

}

}