Написать прогу в паскале.Нужно высчитать минимальные затраты на поклейку обоями комнаты. 3вида обоев(по ширине),3 вида обоев(3типа обоев)+разные цены на обои,1 вид клея,из площади комнаты вычесть площадь окон и дверей.

Написать прогу в паскале.Нужно высчитать минимальные затраты на поклейку обоями комнаты. 3вида обоев(по ширине),3 вида обоев(3типа обоев)+разные цены на обои,1 вид клея,из площади комнаты вычесть площадь окон и дверей.
Гость
Ответ(ы) на вопрос:
Гость
const   n = 9; type   tWP = record     naim: string;     wide: real;     leng: real;     cost: real   end; var   WallPaper: array[1..n] of tWP;   lr, wr, hr, ww, hw, wd, hd, gc, sg: real;   i, nw, nd, nPanel, nWP, nRolls, index: integer;   p, nPanRoll, ng, cg, C, Cmin: real; begin   writeln('Введите информацию по рулонам обоев:');   for i := 1 to n do   begin     with WallPaper[i] do     begin       write('Рулон ', i, ', наименование: ');       readln(naim);       write('ширина, длина, стоимость: ');       readln(wide, leng, cost);     end;   end;   writeln('Длина комнаты, ширина комнаты, высота оклейки');   readln(lr, wr, hr);   writeln('Ширина окна, высота окна, количество окон');   readln(ww, hw, nw);   writeln('Ширина двери, высота двери, количество дверей');   readln(wd, hd, nd);   writeln('Стоимость обойного клея и площадь, которую им можно оклеить');   readln(gc, sg);   p := 2 * (lr + wr) - nw * ww - nd * wd; //периметр оклейки   ng := p * hr / sg;   if ng > int(ng) then ng := int(ng) + 1; //количество банок с клеем   cg := gc * ng;  // общая стоимость клея   Cmin := 32768;   nRolls := 0;   index := 0;   for i := 1 to n do     with WallPaper[i] do     begin       // Требуемое количество полотнищ, т.е. сколько раз       // ширина рулона укладывается по периметру оклейки       nPanel := Trunc(p / wide);       if p - nPanel * wide > 0 then nPanel := nPanel + 1;       // Определяем, сколько полотнищ получается из одного рулона       // при заданной высоте оклейки.       nPanRoll := leng / hr;       // Вычисляем, сколько потребуется рулонов       nWP := Trunc(nPanel / nPanRoll);       if nPanel - nWP * nPanRoll > 0 then nWP := nWP + 1;       C := nWP * cost + cg; // Cтоимость поклейки обоев       if Cmin > C Then begin         Cmin := C; index := i; nRolls := nWP       end;     end;    with WallPaper[index] do   begin     writeln('Минимальные расходы на оклейку в сумме ', CMin:0:2);     writeln('получаются при использовании ', nRolls, ' рул. обоев ',naim);     writeln('шириной ', wide * 100:0:2, ' при цене ', cost:0:2, ' руб.');     writeln('за рулон длиной ', leng:0:0, ' м. и ',ng,' банок клея.')   end end. Тестовое решение: Введите информацию по рулонам обоев: Рулон 1, наименование: Гладкие ширина, длина, стоимость: 0.8 10 190 Рулон 2, наименование: Гладкие ширина, длина, стоимость: 0.9 10 210 Рулон 3, наименование: Гладкие ширина, длина, стоимость: 1.2 8 240 Рулон 4, наименование: Ромбик ширина, длина, стоимость: 0.8 10.5 210 Рулон 5, наименование: Ромбик ширина, длина, стоимость: 0.9 10 230 Рулон 6, наименование: Ромбик ширина, длина, стоимость: 1.1 8.5 240 Рулон 7, наименование: Тисненые ширина, длина, стоимость: 0.8 10 218 Рулон 8, наименование: Тисненые ширина, длина, стоимость: 0.9 9.5 224 Рулон 9, наименование: Тисненые ширина, длина, стоимость: 1 9 235 Длина комнаты, ширина комнаты, высота оклейки 8.5 6.2 2.4 Ширина окна, высота окна, количество окон 1.6 1.2 1 Ширина двери, высота двери, количество дверей 0.95 2.2 2 Стоимость обойного клея и площадь, которую им можно оклеить 85 3.1 Минимальные расходы на оклейку в сумме 3255.00 получаются при использовании 7 рул. обоев Гладкие шириной 90.00 при цене 210.00 руб. за рулон длиной 10 м. и 21 банок клея.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы