Напишите программу, которая вычислит изменение, которое будет дано автоматом по розливу напитков. - PullRequest
0 голосов
/ 18 апреля 2020

Я должен решить это упражнение в c#

Проблема в том, что программа не изменяет значение счетчика. Я уверен, что сделал логическую ошибку, но не могу ее найти

Описание упражнения

Напишите программу, которая будет рассчитывать изменение, которое будет выдано автоматом для розлива напитков. Все предметы стоят менее одного фунта, и один фунт - это самое высокое значение, которое можно вставить в машину. Программа должна запросить у пользователя стоимость товара и введенную сумму (в пенсах). Введенная сумма не должна превышать 100, а стоимость предмета не должна превышать 99. Необходимо проверить, что каждый вход находится в правильном диапазоне и является действительным целым числом. Монеты, которые можно отдать в обмен, - это 50p, 20p, 10p, 5p, 2p и 1p. Ваша программа должна использовать минимальное количество каждой монеты, чтобы произвести изменение. Программа должна отобразить изменение, которое будет дано в виде:

Количество монет 50p:… Количество монет 20p… Количество монет 10p… Количество монет 5p… Число монет 2p… Количество монет 1p составляет…

Например, если пользователь вводит 100 для заданной суммы и 42 для стоимости предмета, программа отобразит (поскольку изменение составляет 58p):

Количество монет 50p равно 1 Количество монет 20p равно 0 Количество монет 10p равно 0 Количество монет 5p равно 1 Количество монет 2p равно 1 Количество монет 1p равно 1

Мой код

static void Main(string[] args)
    {
        int price;
        int paid;
        int remainder;
        int i, a, b, c, d, f, g;
        int p50 = 0;
        int p20 = 0;
        int p10 = 0;
        int p5 = 0;
        int p2 = 0;
        int p1 = 0;
        Console.Write("Price: ");
        price = Int32.Parse(Console.ReadLine());
        Console.Write("Paid: ");
        paid = Int32.Parse(Console.ReadLine());
        remainder = price - paid;


        while(remainder >= 50)
        {
            p50++;
            a = remainder / 50;
            remainder = remainder % 50;                
        }
        while (remainder >= 20)
        {
            p20++;
            b = remainder / 20;
            remainder = remainder % 20;                                                            
        }
        while (remainder >= 10)
        {
            p10++;
            c = remainder / 10;
            remainder = remainder % 10;
        }
        while (remainder >= 5)
        {
            p5++;
            d = remainder / 5;
            remainder = remainder % 5;
        }
        while (remainder >= 2)
        {
            p2++;
            f = remainder / 2;
            remainder = remainder % 2;
        }
        while (remainder >= 1)
        {
            p1++;
            g = remainder / 1;
            remainder = remainder % 1;
        }

        Console.WriteLine("Number of 50p coins is " + p50);
        Console.WriteLine("Number of 20p coins is " + p20);
        Console.WriteLine("Number of 10p coins is " + p10);
        Console.WriteLine("Number of 5p coins is " + p5);
        Console.WriteLine("Number of 2p coins is " + p2);
        Console.WriteLine("Number of 1p coins is " + p1);

        Console.ReadKey();

    }

Окно вывода введите описание изображения здесь

введите описание изображения здесь

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