Вправа Килимки


У вибраному самостійно середовищі програмування розробіть проект Килимки, за яким можна визначити, яку максимальну кількість квадрат­них килимків зі стороною с, де с — ціле число, потрібно використати, щоб застелити кімнату з підлогою розміром а х b, де а і b — цілі числа. У проек­ті також слід визначити, яка площа не буде накрита килимками, якщо їх не можна накладати чи підгинати. Передбачте також ситуацію, коли розмір килимка перевищує розмір підлоги кімнати.


Створюємо інтерфейс


Вибір чи можна підгинати килимок через CheckBox1, введення сторін кімнати в Edit1- Edit2, виведення непокритої площі кімнати в Label7, кількості килимків в  Label8, Label9 стає видимою і показує текст, коли площа килимка перевищує площу кімнати.

Пишемо програмний код

procedure TForm1.Button1Click(Sender: TObject);
var
  c,a,b,Sk,Sp,n,k:Integer;
оголошення змінних c (сторона килимка),a (сторона кімнати),b (сторона кімнати),Sk (площа килимка),Sp (площа кімнати),n (непокрита площа),k (кількість килимків) – цілі числа
  ka,kb:Real;
оголошення змінних  ka (кількість довжин сторони килимка в стороні а),kb (кількість довжин сторони килимка в стороні b)
  begin
  n:=0;
  k:=0;
  Label9.visible:=false;
- обнулення змінних для повторного запуску програми (і невидимий напис про перевищення площі)
  c:=strtoInt(edit1.Text);
  a:=strtoInt(edit2.Text);
  b:=strtoInt(edit3.Text);
  Sk:=c*c; площа килимка
  Sp:=a*b; площа кімнати
  ka:=a/c; кількість довжин сторони килимка в стороні а
  kb:=b/c; кількість довжин сторони килимка в стороні b
  if CheckBox1.checked=true then якщо підгинати не можна, то
   if Sk>Sp then Label9.visible:=true якщо площа килимка більша від площі кімнати, вивести повідомлення
    else
     begin
       k:=Trunc(ka)*Trunc(kb); обчислення кількості килимків, відкидається залишок, бо підгинати не можна
       n:=Sp-k*Sk; обчислення непокритої площі
     end
  else
    begin
     if ka>(a div c) then ka:=ka+1; якщо довжина сторони килимка не ділиться націло на сторону кімнати, то додати одиницю, бо підгинати килимки можна
     if kb>(b div c) then kb:=kb+1; якщо довжина сторони килимка не ділиться націло на другу сторону кімнати, то додати одиницю, бо підгинати килимки можна
     k:=Trunc(ka)*Trunc(kb); обчислення кількості килимків
    end;
label7.caption:=Inttostr(n)+' кв.м'; показуємо непокриту площу
label8.caption:=Inttostr(k)+' шт'; показуємо кількість килимків
end;

Робота програми





Немає коментарів:

Дописати коментар