私は、2 つのサイコロの出目を生成し、それらを合計して、これを行うのにかかった試行回数を表示するこのプログラムを作成しました。私の問題は、プログラムがそれらをすべて正しく追加することです。最初に入力した合計に到達するまでにかかった試行回数を出力できないようです。私が望む期待される出力の例は次のとおりです。
Dice Thrower
============
Total sought : 7
Result of throw 1 : 4 + 4
Result of throw 2 : 1 + 4
Result of throw 3 : 2 + 6
Result of throw 4 : 1 + 1
Result of throw 5 : 4 + 3
You got your total in 5 throws!
これが私のコードです。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int validator(); //Function to validate
void clear(void); //Clear function
int main() {
int i=0,counter = 0, input, SUM, random1, random2; //Variables
printf("Dice Thrower\n"); //Print statements
printf("============\n");
printf("Total sought : ");
input = validator(); //Call Function Validator
srand(time(NULL));
for (i = 2; SUM!= input; i++) //For Loop for random dice throws
{
random1 = rand()%6+1;
random2 = rand()%6+1;
SUM = random1 + random2;
counter++;
printf("Result of throw %d : %d + %d\n", counter, random1, random2);
if (SUM == i)
{
printf("You got your total in %d throws!\n", counter); //Print statement for final total
}
}
return 0;
}
int validator() //Validator function
{
int tries = 1, boss, returnvalue;
char k;
do{
boss = scanf("%d%c", &returnvalue,&k);
if (boss == 0)
{
printf ("Invalid input, Try again : ");
clear();
}
else if(returnvalue >= 13 || returnvalue <= 1)
{
printf("Invalid integer entered, please enter an integer greater than or equal to 2 and less than or equal to 12 : ");
}
else if(k != '\n')
{
printf("Trailing characters present, reenter : ");
clear();
}
else
{
tries = 0;
}
} while ( tries == 1);
return returnvalue;
}
void clear (void) { //Clear function
while ( getchar() != '\n' );
}