Ремонт

      Комментарии к записи Ремонт отключены

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 7 мес., 3 нед. назад.

  • Автор
    Сообщения
  • #3380

    Условие задачи взято с сайта acmp.ru:

    Ваш любимый дядя – директор фирмы, которая делает евроремонты в офисах. В связи с финансово-экономическим кризисом, дядюшка решил оптимизировать свое предприятие.

    Давно ходят слухи, что бригадир в дядюшкиной фирме покупает лишнее количество стройматериалов, а остатки использует для отделки своей новой дачи. Ваш дядя заинтересовался, сколько в действительности банок краски необходимо для покраски стены в офисе длиной L метров, шириной – W и высотой – H, если одной банки хватает на 16м^2, а размерами дверей и окон можно пренебречь? Заказов много, поэтому дядя попросил написать программу, которая будет все это считать.

    Входные данные
    Входной файл INPUT.TXT содержит три натуральных числа L, W, H – длину, ширину и высоту офиса в метрах соответственно, каждое из которых не превышает 1000.

    Выходные данные
    В выходной файл OUTPUT.TXT выведите одно целое число – минимальное количество банок краски, необходимых для покраски офиса.

    Примеры

    INPUT.TXT OUTPUT.TXT
    1 8 8 2 4
    2 1 1 3 1

    Разбор решения задачи

    Считаем площадь поверхности офиса:

    Так как в офисе всего 4 стены и все они попарно равны (т.е. левая стена по площади равна правой и т.д.), а площадь всего офиса равна сумме площадей всех сторон, то общая площадь S = 2*(H*L + H*W)

    Блок-схема алгоритма решения задачи:

    Исходный код решения на языке С++:

    #include <fstream>
    #include <iostream>
    using namespace std;
    int main() {  
    int l,w,h; 
    ifstream ifst("input.txt");// инициируем файл input
    ofstream ofst("output.txt");//  инициируем файл output
    if (!ifst) {
    cout << "file not opened";
    return 1;
    }
    ifst>>l>>w>>h;// задаем ширину, длину и высоту
    int s=(l*h+h*w)*2;// считаем площадь
    int n=s/16; // ищем необходимое количество банок с краской
    if(s%16) // если s не делится на 16 с остатка то прибавляем к n 1
    n++; 
    ofst<<n;// вывод результатов
    }
    

Для ответа в этой теме необходимо авторизоваться.