0

私は、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' );

      }
4

1 に答える 1

2

if (SUM == i)この条件を次のように変更する必要があると思います。

    if (SUM == input)

SUMを と比較したい場合input

于 2012-11-07T23:54:23.470 に答える