Оператор модуля со случайными числами - PullRequest
0 голосов
/ 16 ноября 2018

То, что я хочу сделать, - это генерировать случайные числа, брать эти случайные числа и помещать их через оператор модуля.И я хочу, чтобы он спросил у пользователя ответ, который, по его мнению, так и есть, и тогда ему скажут, правильно это или нет.Это то, что у меня есть.

Random rand = new Random();
int minA;
int maxA;
int minB;
int maxB;
int usersAnswer;

Console.WriteLine("what is the minimum value: ");
Int32.TryParse(Console.WriteLine(), out minA);

Console.WriteLine("what is the minimum value: ");
Int32.TryParse(Console.WriteLine(), out maxA);

Console.WriteLine("what is the minimum value: ");
Int32.TryParse(Console.WriteLine(), out minB);

Console.WriteLine("what is the minimum value: ");
Int32.TryParse(Console.WriteLine(), out maxB);

Console.WriteLine("What is the result of {0} % {1}? ", rand.Next(minA, maxA), rand.Next(minB, maxB)); 
Int32.TryParse(Console.ReadLine(), out usersAnswer);
answer = //directly implementing the random numbers generated with modulous operator)
if(userAnswer == answer)
{
    Console.WriteLine("{0} is correct", answer);
}
else
{
    Console.WriteLine("Good try, but no: {the random number} % {the other random number} = {0}", not sure, not sure, answer)
}    

Итак, я хочу знать, как я могу напрямую реализовать случайные числа, уже сгенерированные из "Console.WriteLine (" Каков результат {0}% {1}? ", rand.Next (minA, maxA), rand.Next (minB, maxB));"в уравнение оператора модуля и получить ответ.Я надеюсь, что все это имело смысл

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

У вашего кода есть проблема:

  1. Не забудьте исправить текст инструкции
  2. Somthimes, вы используете writeline (), но readline () на самом деле
  3. Вы должны понять, что что-то может пойти не так, проверьте комментарий

Попробуй

    static void Main(string[] args)
    {
        Random rand = new Random();
        int minA, maxA;
        int minB, maxB;
        int userAnswer;

        Console.WriteLine("what is the minimum A: ");
        if (!Int32.TryParse(Console.ReadLine(), out minA)) { return; } //If something going wrong, you should handle it.

        Console.WriteLine("what is the maximum A: ");
        if (!Int32.TryParse(Console.ReadLine(), out maxA)) { return; }

        Console.WriteLine("what is the minimum B: ");
        if (!Int32.TryParse(Console.ReadLine(), out minB)) { return; }

        Console.WriteLine("what is the maximum B: ");
        if (!Int32.TryParse(Console.ReadLine(), out maxB)) { return; }

        if (minA > maxA) { exchange(ref minA, ref maxA); } //User might have typo,and this is one way to fix it.
        if (minB > maxB) { exchange(ref minB, ref maxB); }

        int rndA = rand.Next(minA, maxA),
            rndB = rand.Next(minB, maxB); //You should restore the random result, or lost it
        int result;
        try
        {
            result = calcMod(rndA, rndB); //Directly implementing the random numbers generated with modulous operator
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
            return;
        }

        Console.WriteLine($"What is the result of {rndA} % {rndB}? ");
        Int32.TryParse(Console.ReadLine(), out userAnswer);
        if (userAnswer == result)
        {
            Console.WriteLine("{0} is correct", result);
        }
        else
        {
            Console.WriteLine($"Good try, but no: {rndA} % {rndB} = {result}");
        }

        Console.Write("\nPress Any key to leave.");
        Console.ReadKey();
    }

    //Calculate mod result
    static int calcMod(int i1, int i2)
    {
        try
        {
            return i1 % i2;
        }
        catch (Exception e)
        {
            throw e;
        }
    }

    //Swap number
    static void exchange(ref int i1, ref int i2)
    {
        int tmp;

        tmp = i1;
        i1 = i2;
        i2 = tmp;
    }
0 голосов
/ 16 ноября 2018

Вам следует сохранить 2 случайных числа в качестве новых переменных в вашем классе:

 int RandomOne;
 int RandomTwo;

назначить их далее вниз

 RandomOne = rand.Next(minA, maxA);
 RandomTwo = rand.Next(minA, maxA);

и затем обращаться к ним в своем сообщении.Что-то вроде:

 Console.WriteLine($"What is the result of {RandomOne} % {RandomTwo}?");
...