Опубликовано 03.01.2018 по предмету Информатика от Гость

Написать прогу в паскале.Нужно высчитать минимальные затраты на поклейку обоями комнаты. 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 банок клея.



Не нашел нужный ответ?

Если ответ по предмету Информатика отсутствует или он оказался неправильным, то попробуй воспользоваться поиском других ответов во всей базе сайта.


Найти другие ответы
Самые новые вопросы