Какую минимальную сумму нужно истратить для покупки 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, указывая, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д