Установка конечного значения в ноль заставляет программу не считать или выводить, но установка на самое низкое значение делает - PullRequest
0 голосов
/ 02 марта 2020

Это практика для отдельной более крупной программы, просто небольшой вывод на консоль, показывающий, сколько определенных значений используется. По какой-то причине, если я установлю окончательное значение while num на ноль, в консоли ничего не будет выводиться. Если я установлю его на 20, он выдаст, посчитает сотни и 20, но пропустит тот факт, что есть 50, потому что значение while не позволит ему go ниже 20. Я пытался, пока num>> = ноль также. При> нуле или> = я бы ожидал, что он будет считать 50 и вывести 4 100, 1 50 и 0 20. Я произвольно установил значение while на 10, и оно все равно дало 2 20 и сотни, но, установив на 1, оно больше не выводилось, так же, как и при установке на ноль. Прежде чем я смогу включить logi c в большую программу, которая имеет гораздо больше значений и возвратов, я думаю, что мне нужно понять, где я терплю неудачу. Я посмотрел на алгоритмы рекурсии и трекбэка, и они были немного выше того, чем я являюсь. Мне было интересно, смогу ли я использовать модуль тоже. Это неправильно, но мне больше всего интересно, почему это значение не позволяет себе быть установленным больше или равным нулю.

using System;

namespace dollars_back_test
{
   class Program
   {
      static void Main(string[] args)
      {
         int num = 450, hundos = 0, fifties = 0, twenties = 0;
         do
         {
            if (num > 100)
            {
               num -= 100;
               hundos++;
            }
            else if (num > 50)
            {
               num -= 50;
               fifties++;
            }
            else if (num > 20)
            {
               num -= 20;
               twenties++;
            }
         } while (num > 20);
         Console.WriteLine($"Dispensing {hundos} 100's, {fifties} 50's, {twenties} 20's.");
         Console.ReadLine();
      }
   }
}

1 Ответ

0 голосов
/ 02 марта 2020

Я не уверен, что правильно понимаю проблему, но я полагаю, что вы спрашиваете, почему l oop не печатает никаких 50-х. Это потому, что вы проверяете, является ли число больше 50, но поскольку вы вычитаете 100 четыре раза, значения должны быть:

1st loop: num 450
2nd loop: num 350
3rd loop: num 250
4th loop: num 150
5th loop: num 50 --> explenation: number isn't larger than 50, it is >= 50, that's why it will continue with printing the num>20 two times until 10 remains. 
6th loop: num 30
7th loop: num 10

Чтобы решить эту проблему, вы можете просто заменить это:

num>50

по номеру> = 50

, если это то, что вы хотели бы видеть. Затем он напечатает 50-х годов.

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