Разделение в C # без библиотеки классов Math - PullRequest
0 голосов
/ 14 сентября 2011

Я сделал программу, которая делит без каких-либо арифметических символов, вот код:

        int num1;
        int num2;

        Console.WriteLine("Enter first number");
        int.TryParse(Console.ReadLine(), out num1);

        Console.WriteLine("Enter Second Number");
        int.TryParse(Console.ReadLine(), out num2);
        int sum = 0;

        sum = num1;
        int counter = 0;

        while (sum > 0)
        {
            sum -= num2;
            counter += 1;
        }
        Console.WriteLine("The division of the two numbers is " + counter);

Теперь я бы хотел, чтобы он показывал остаток от деления, например 10/3 покажет 1, так как от суммы осталось 1.

Как мне поступить? Какой цикл я должен использовать и насколько он похож на мой цикл деления?

Ответы [ 6 ]

2 голосов
/ 14 сентября 2011
var rem = num1;
while (rem >= num2)
{
  rem -= num2;
}

Console.WriteLine("The remainder is " + rem);

или если вы хотите сделать это действительно легко, то после цикла:

var rem = sum + num2;

Поскольку ваша программа имеет недостатки, вы должны изменить цикл на:

while (sum >= num2)
{
  sum -= num2;
  counter += 1;
}

Тогда у вас есть результат деления в counter, а остаток в sum.

1 голос
/ 14 сентября 2011

Измените эту строку

while (sum > 0)

на эту

while (sum >= num2 )

, тогда sum будет содержать остаток, а counter фактически даст правильный результат.

ГДж

0 голосов
/ 14 сентября 2011
while (sum >= num2 ) // <- changed
{
    sum -= num2;
    counter += 1;
}
Console.WriteLine("The division of the two numbers is " + counter);
Console.WriteLine("The remainder of the two numbers is " + sum);
0 голосов
/ 14 сентября 2011

Я надеюсь, что это просто упражнение, позволяющее увидеть, можно ли разделить без фактического разделения, а не настоящая попытка создать эффективный алгоритм разделения!

Я бы не хотел видеть, сколько времени занимает вычисление 1,000,000,000 / 1

В любом случае, если вы должны сделать это таким образом, то остаток будет окончательным значением sum плюс num2.

0 голосов
/ 14 сентября 2011

Измените while в

while (sum >= num2)

и добавьте в конце

Console.WriteLine("The remainder of the division of the two numbers is " + sum);
0 голосов
/ 14 сентября 2011

Остаток будет sum + num2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...