Требуется определить, хватит ли имеющейся суммы денег на покупку линолеума - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача нужна с комментами Для прямоугольной комнаты размером W x H метров нужно закупить линолеум. В магазине линолеум продают рулонами; вам известно количество квадратных метров линолеума в одном рулоне и цена рулона. Требуется определить, хватит ли имеющейся суммы денег на покупку линолеума. Линолеум также может быть закуплен у иностранного поставщика, поэтому требуется узнать его стоимость в иностранной валюте, курс которой по отношению к рублю известен. Входные данные Первая строка содержит два целых числа W и H (1 <= W, H <= 1000) — соответственно длину и ширину комнаты в метрах. Вторая строка содержит два целых числа K и P (1 <= K, P <= 1000) — соответственно количество квадратных метров линолеума в одном рулоне и цену одного рулона в рублях. Третья строка содержит одно целое число M (1 <= M <= 10^6) — количество имеющихся денег в рублях. Четвёртая строка содержит одно вещественное число T (0 < T <= 10) — стоимость рубля в иностранной валюте. Выходные данные В первой строке выведите два целых числа — количество рулонов линолеума, которое потребуется приобрести, и общую стоимость линолеума в рублях. Во второй строке выведите "YES" (без кавычек), если имеющихся денег хватит на покупку линолеума, иначе выведите "NO" (без кавычек). В третьей строке выведите одно вещественное число с четырьмя знаками после запятой — общую стоимость линолеума в иностранной валюте

Решение задачи: «Требуется определить, хватит ли имеющейся суммы денег на покупку линолеума»

textual
Листинг программы
#include <stdio.h>
 
int main ( void )
{ 
    // Декларация переменных
    
    // имеющаяся сумма на покупку линолиума
    unsigned int moneyAmount;                       
    
    // соответственно цена и размер одного рулона линолеума
    unsigned short linoleumPrice, linoleumQuantity; 
    
    // ширина, длина и площадь комнаты
    unsigned short roomWidth, roomLength, roomArea; 
        
    // oneMeter - стоимость одного метра линолеума  
    unsigned short oneMeter, linoleumRolls = 0; 
    
    // roll - счетчик кол-ва необходимых рулонов
    unsigned char roll = 0, counter;                
    
    // стоимость рубля в иностранной валюте 
    double moneyCost;                               
 
    
 
    // вводим все необходимые данные для вычислений
    
    puts("Enter width and length of your room");
    scanf("%hu%hu", &roomWidth, &roomLength);
 
    puts("Enter size (in square meter) and price of a roll of linoleum");
    scanf("%hu%hu", &linoleumQuantity, &linoleumPrice);
 
    puts("Enter your financial aivalability");
    scanf("%u", &moneyAmount);
 
    puts("Enter corrent cost of foreign money");
    scanf("%lf", &moneyCost);
 
    // находим площадь комнаты
    roomArea = roomWidth * roomLength;    
    
    // стоимость одного метра линолеума (не обязательно)
    oneMeter = linoleumPrice / linoleumQuantity;   
    
    // внутри цикла определяем необходимое кол-во рулонов линолеума
    for (counter = 0; counter < roomArea; ++counter){  
        if (linoleumRolls < roomArea){
            ++roll;
            linoleumRolls += linoleumQuantity;
        }
        else
            break;
    }
    // выводим кво необходимых рулонов и их стоимость и (не обязательно) реальную 
    // стоимость для покрытия линолеумом комнаты
    printf("%-2hu%4hu%7hu\n", roll, roll * linoleumPrice, oneMeter * roomArea);
    
    // хватит или нет имеющихся денег
    (roll * linoleumPrice <= moneyAmount) ? puts("YES") : puts("NO");
    
    // стоимость необходимого к-ва рулонов в иностранной валюте 
    printf("%.4f\n", ((double)roll * (double)linoleumPrice) * moneyCost);
 
}

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

  1. Объявление переменных:
    • moneyAmount (имеющаяся сумма на покупку линолеума)
    • linoleumPrice (цена и размер одного рулона линолеума)
    • linoleumQuantity (количество рулонов линолеума)
    • roomWidth (ширина комнаты)
    • roomLength (длина комнаты)
    • roomArea (площадь комнаты)
    • oneMeter (стоимость одного метра линолеума)
    • linoleumRolls (счетчик кол-ва необходимых рулонов)
    • roll (счетчик кол-ва необходимых рулонов)
    • counter (счетчик кол-ва циклов)
    • moneyCost (стоимость рубля в иностранной валюте)
  2. Ввод данных:
    • roomWidth и roomLength (ширина и длина комнаты)
    • linoleumQuantity и linoleumPrice (размер и цена рулона линолеума)
    • moneyAmount (имеющаяся сумма денег)
    • moneyCost (стоимость рубля в иностранной валюте)
  3. Вычисления:
    • roomArea (площадь комнаты)
    • oneMeter (стоимость одного метра линолеума)
    • linoleumRolls (кол-во рулонов линолеума)
    • roll (кол-во рулонов линолеума)
  4. Вывод данных:
    • кво необходимых рулонов и их стоимость
    • реальная стоимость для покрытия линолеумом комнаты
    • ответ на вопрос хватит или нет имеющихся денег
    • стоимость необходимого к-ва рулонов в иностранной валюте

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

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