Ремонт

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

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

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

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

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

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

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

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

    Примеры

    INPUT.TXTOUTPUT.TXT
    18 8 24
    21 1 31

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

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

    Так как в офисе всего 6 стен и все они попарно равны (т.е. левая стена по площади равна правой и т.д.), а площадь всего офиса равна сумме площадей всех сторон, то общая площадь S = 2*(H*L + L*W+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>>h>>w;// задаем ширину, длину и высоту
    	int s=(l*h+l*w+h*w)*2;// считаем площадь
    	int n=s/16; // ищем необходимое количество банок с краской
    	if(!s%16) // если s делится на 16 с остатка то прибавляем к n 1
    		n++; 
    	ofst<<n;// вывод результатов
    }

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