Какую минимальную сумму нужно истратить для покупки 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;
}

Объяснение кода листинга программы

Вот что делается в этом коде:

  1. unsigned n; Это объявление переменной типа unsigned (беззнаковое целое число), которая называется n. Она будет использоваться для подсчёта количества необходимых дисков.
  2. while ( printf(How many CD you need?) && scanf(%u, &n) == 1 && n ) Это цикл while, который будет выполняться до тех пор, пока:
    • функция printf успешно выводит сообщение How many CD you need? (Как много вам нужно дисков?)
    • функция scanf успешно считывает целочисленное значение (без знака) в переменную n
    • переменная n не равна нулю
  3. *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)
  4. return 0; Это функция main(), которая возвращает 0, указывая, что программа успешно завершилась.

ИИ поможет Вам:


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

Оцени полезность:

15   голосов , оценка 3.733 из 5
Похожие ответы