1

だから私は、ランダムな合計が生成され、答えられると正しいスコアまたは間違ったスコアに追加される小さな数学ゲームを構築しています。順調に進んでおり、特定のことについては助けを受け、その過程で学んだこともありますが、理解できない別の問題にぶつかりました。ゲームは、合計を生成するときに +、-、*、および / 演算子の間で選択し、+、-、および * はうまく機能しますが、/ は、プログラムが好まない小数の答えを要求することがよくあります。最初の数値をダイビングするときに小数の答えになる、除算する数値を生成しないようにする方法を見つけたいと思います。これまでの内容を明確にするためのコード例を次に示します。

        var randomNum = new Random();
        num1 = randomNum.Next(0, 10);
        num2 = randomNum.Next(0, 10);
        char[] operators = { '+', '-', '*', '/' };
        char op = operators[randomNum.Next(operators.Length)];
        switch (op)
        {
            case '+':
                answer = num1 + num2;
                label1.Text = num1.ToString() + " + " + num2.ToString() + " = ";
                break;

            case '-':
                answer = num1 - num2;
                label1.Text = num1.ToString() + " - " + num2.ToString() + " = ";
                break;

            case '*':
                answer = num1 * num2;
                label1.Text = num1.ToString() + " * " + num2.ToString() + " = ";
                break;

            case '/':
                answer = num1 / num2;
                label1.Text = num1.ToString() + " / " + num2.ToString() + " = ";
                break;
         }

num1 と num2 を示すビットをそれぞれのケースに移動して、次のようにしました。

            case '/':
                num1 = randomNum.Next(0, 10);
                num2 = randomNum.Next(0, 10);
                answer = num1 / num2;
                label1.Text = num1.ToString() + " / " + num2.ToString() + " = ";
                break;

しかし、小数の合計の答えを避けるために (0, 10) を使用する代わりに、括弧に何を入れることができるか想像できません。答えが10進数になるかどうか、およびnum2を再ロールして整数の答えを取得するかどうかを判断する方法はありますか? ありがとう!

4

2 に答える 2

1

整数除算は切り捨てnum1られるため、除算が正確になるように変更する必要があります。

num1 = randomNum.Next(0, 10);
num2 = randomNum.Next(1, 10);//Cannot divide by 0!!
answer = num1 / num2;
num1 = answer * num2;

と の場合num1 = 7num2 = 3answerなり2num1に変更され6ます。作りnum1 == 6num2 == 3そしてanswer == 2

num2生成しanswerて計算することもできますnum1

num2 = randomNum.Next(1, 10);//Cannot divide by 0!!
answer = randomNum.Next(0, 10);
num1 = answer * num2; // answer == num1 / num2
于 2013-09-09T13:41:39.533 に答える
1

ものすごく単純。整数を送信すると、均等に割り切れる数が得られます (子供にとっては簡単です)。

public static class TestWholeNumber
{
    public static int ReturnWholeNumber(int testnum)
    {
        var randomNum = new Random(Guid.NewGuid().GetHashCode());

        int num2 = 0;
        do
        {
            num2 = randomNum.Next(1, 10);
        }
        while (testnum % num2 != 0);
        return num2;
    }
}
于 2013-09-09T13:47:48.150 に答える