Какую минимальную сумму нужно истратить для покупки N дисков при данных ценах? - C (СИ)
Формулировка задачи:
Проблема с задачей.
Чистые компакт-диски продают в трёх видах упаковок. Упаковка из 100 дисков стоит 100 грн., из 20 дисков - 30 грн., а один диск стоит 2 грн. Какую минимальную сумму нужно истратить для покупки N таких дисков?
Технические условия
Входные данные
Единственное число N - количество дисков. Значение N натуральное, не больше 1000.
Выходные данные
Искомая минимальная сумма в гривнах.
Код выглядит так.
Скажите, что я делаю неправильно?
Листинг программы
- #include <stdio.h>
- int main() {
- int N, pr = 0;
- scanf("%d", &N);
- while(N > 0) {
- if(N >= 100 && N <= 1000) {
- pr = pr + 100;
- N = N - 100;
- }
- if(N >= 20 && N < 100) {
- pr = pr + 30;
- N = N -20;
- }
- if(N > 0 && N < 20) {
- pr = pr + 2;
- N = N - 1;
- }
- }
- printf("%d\n", pr);
- return 0;
- }
Решение задачи: «Какую минимальную сумму нужно истратить для покупки N дисков при данных ценах?»
textual
Листинг программы
- #include <stdio.h>
- int main(void) {
- unsigned n;
- while ( printf("How many CD you need? ") && scanf("%u", &n) == 1 && n )
- printf("Get ready to pay %u money.\n", ( n / 100 * 100 ) + ( n % 100 / 20 * 30 ) + ( n % 100 % 20 * 2 ));
- return 0;
- }
Объяснение кода листинга программы
Вот что делается в этом коде:
- unsigned n; Это объявление переменной типа unsigned (беззнаковое целое число), которая называется n. Она будет использоваться для подсчёта количества необходимых дисков.
- while ( printf(
How many CD you need?
) && scanf(%u
, &n) == 1 && n ) Это цикл while, который будет выполняться до тех пор, пока:- функция printf успешно выводит сообщение
How many CD you need?
(Как много вам нужно дисков?) - функция scanf успешно считывает целочисленное значение (без знака) в переменную n
- переменная n не равна нулю
- функция printf успешно выводит сообщение
- *printf(
Get ready to pay %u money.\n
, ( n / 100 100 ) + ( n % 100 / 20 30 ) + ( n % 100 % 20 2 ));** Это функция printf, которая выводит сообщениеGet ready to pay [сумма] money.
(Приготовьтесь заплатить [сумма] денег.), где [сумма] - это вычисленное значение:- сначала вычисляется количество денег, которое нужно заплатить за 100 единиц товара (n / 100 * 100)
- затем вычисляется количество денег, которое нужно заплатить за остаток от 100 единиц товара (n % 100 / 20 * 30)
- наконец, вычисляется количество денег, которое нужно заплатить за остаток от остатка от 100 единиц товара (n % 100 % 20 * 2)
- return 0; Это функция main(), которая возвращает 0, указывая, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д