Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Steven Lay
- //19/04/2017
- //Youchew is a program that takes the input of 6 dice rolls and calculates a score using a specific criteria, selecting the best score it possibly can and printing it out
- #include <stdio.h>
- #include <stdlib.h>
- #define ROLLS 5
- int main(void){
- int diceRolls[ROLLS];
- int i = 0;
- int j = 0;
- while(i < ROLLS){
- scanf("%d", &diceRolls[i]);
- if((diceRolls[i]) < 1 || (diceRolls[i]) > 9){
- printf("Invalid input: 5 integers 1..9 must be supplied.\n");
- return EXIT_FAILURE;
- }
- else{
- i++;
- }
- }
- i = 0;
- //Sum
- int sum = 0;
- while(i < ROLLS){
- printf("%d ", diceRolls[i]);
- i++;
- }
- i = 0;
- while(i < ROLLS){
- sum = sum + diceRolls[i];
- i++;
- }
- printf("You Chew score is %d: sum.\n", sum);
- //Sameface
- int k = 0;
- int sameFace = 0;
- int face = 0;
- int face2 = 0;
- i = 0;
- j = 0;
- while(j < ROLLS){
- if(diceRolls[j] == diceRolls[i]){
- i++;
- j++;
- }
- }
- i = 0;
- j = 0;
- while(i < ROLLS){
- j = k;
- while(j < ROLLS){
- if(j == 4){
- j++;
- }
- else if(diceRolls[i] == diceRolls[j+1]){
- sameFace++;
- j++;
- face = diceRolls[i];
- }
- else{
- j++;
- }
- }
- if(sameFace == 0){
- i++;
- k++;
- }
- else{
- i = 5;
- j = 5;
- }
- }
- //For sameFace, another while loop is used for pairs of pairs
- if(sameFace == 1){
- i = 0;
- j = 0;
- k = 0;
- sameFace = 0;
- while(i < ROLLS){
- j = k;
- while(j < ROLLS){
- if(j == 4){
- j++;
- }
- else if(diceRolls[i] == diceRolls[j+1]){
- if(diceRolls[i] != face){
- if(i == 3){
- sameFace++;
- j++;
- face2 = diceRolls[i];
- //The following is used to end the while loops
- i = i + 2;
- j = j + 2;
- }
- else{
- sameFace++;
- j++;
- face2 = diceRolls[i];
- }
- }
- else{
- j++;
- }
- }
- else{
- j++;
- }
- }
- if(sameFace == 0){
- i++;
- k++;
- }
- else{
- i++;
- k++;
- }
- }
- if(sameFace == 0){
- sameFace = (14 + (2 * face));
- printf("You Chew score is %d: two %d's.\n", sameFace, face);
- }
- else if(sameFace == 1){
- sameFace = (13 + 2 * face + 2 * face2);
- printf("You Chew score is %d: pair of %d's and a pair of %d's.\n", sameFace, face, face2);
- }
- else{
- sameFace = (15 + 3 * face2 + 2 * face);
- printf("You Chew score is %d: three %d's and a pair of %d's.\n", sameFace, face2, face);
- }
- }
- //Another while loop will be needed here in order to check for a trio and a pair
- else if(sameFace == 2){
- i = 0;
- j = 0;
- if((diceRolls[i] == diceRolls[j+1] && diceRolls[i] == diceRolls[j+2]) && (diceRolls[i+3] == diceRolls[j+4])){
- face = diceRolls[i];
- face2 = diceRolls[i+3];
- sameFace = (15 + 3 * face + 2 * face2);
- printf("You Chew score is %d: three %d's and a pair of %d's.\n", sameFace, face, face2);
- }
- else{
- sameFace = (15 + (3 * face));
- printf("You Chew score is %d: three %d's.\n", sameFace, face);
- }
- }
- //For four of a kind's
- else if(sameFace == 3){
- sameFace = (16 + (4* face));
- printf("You Chew score is %d: four %d's.\n", sameFace, face);
- }
- //For five of a kind's
- else if(sameFace == 4){
- sameFace = (17 + (5 * face));
- printf("You Chew score is %d: five %d's.\n", sameFace, face);
- }
- //Sequential faces
- //This first while loop identifies the smallest number in the set
- int counter = 0;
- int sequence = 0;
- int smallest = 0;
- i = 0;
- j = 0;
- while(j < ROLLS){
- if(diceRolls[i] < diceRolls[j]){
- sequence = diceRolls[i];
- j++;
- }
- else if(diceRolls[i] == diceRolls[j]){
- sequence = diceRolls[i];
- j++;
- }
- else{
- i++;
- }
- }
- printf("%d", sequence);
- smallest = sequence;
- //This second while loop checks all other integers in the set
- i = 0;
- j = 0;
- diceRolls[j] = 0;
- while (i < ROLLS){
- if(diceRolls[i] == sequence + 1){
- if(diceRolls[j] == 0){
- diceRolls[j] = sequence;
- counter++;
- sequence = diceRolls[i];
- i = 0;
- }
- else{
- counter++;
- sequence = diceRolls[i];
- j++;
- diceRolls[j] = sequence;
- i = 0;
- }
- }
- else{
- i++;
- }
- }
- j = 0;
- printf("counter is %d, %d, %d", counter, diceRolls[j], diceRolls[j+4]);
- int sequenceResult = 0;
- if(counter == 3){
- j = 0;
- sequenceResult = (25 + diceRolls[j+3]);
- printf("You Chew score is %d: short sequence %d..%d.",sequenceResult ,diceRolls[j] ,diceRolls[j+3]);
- }
- else if(counter == 4){
- j = 0;
- sequenceResult = (37 + diceRolls[j+4]);
- printf("You Chew score is %d: long sequence %d..%d.",sequenceResult ,diceRolls[j] ,diceRolls[j+4]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement