Визуализировать карту двора с заявленными футбольными полями - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

В одном большом дворе, представленном прямоугольной решёткой в N строк и M столбцов (N,M<=9), существовали две гордые футбольные команды. Каждая из них решила построить собственное прямоугольное футбольное поле, определяемое левым верхним углом (i1 j1 для первой команды и i2 j2 для второй) и высотой и шириной (R1 C1 для первой команды и R2 C2 для второй). Пожалуйста, помогите им визуализировать карту двора с заявленными футбольными полями, пометив цифрой 0 область, не занятую никаким полем, цифрой 1 - клетки только под первым полем, цифрой 2 - клетки под вторым полем и, наконец, цифрой 3 - спорные территории, которые заявлены как часть своего футбольного поля и первой командой, и второй. Формат ввода: N M i1 j1 R1 C1 i2 j2 R2 C2 Пример ввода: 5 6 1 2 3 4 3 3 3 4 Формат вывода: a[1,1] a[1,2] ... a[1,M] a[2,1] a[2,2] ... a[2,M] ... a[N,1] a[N,2] ... a[N,M] Пример вывода: 0 1 1 1 1 0 0 1 1 1 1 0 0 1 3 3 3 2 0 0 2 2 2 2 0 0 2 2 2 2 Заранее спасибо!!!

Решение задачи: «Визуализировать карту двора с заявленными футбольными полями»

textual
Листинг программы
const nmax=9;
var a:array[1..nmax,1..nmax] of byte;
    n,m,i,j,i1,j1,i2,j2,r1,c1,r2,c2:byte;
begin
n:=5;
m:=6;
i1:=1;
j1:=2;
r1:=3;
c1:=4;
i2:=3;
j2:=3;
r2:=3;
c2:=4;
for i:=1 to n do
for j:=1 to m do
if  not(i in [i1..i1+r1-1])and not(j in [j1..j1+c1-1])
and not(i in [i2..i2+r2-1])and not(j in [j2..j2+c2-1]) then a[i,j]:=0
else if (i in [i1..i1+r1-1])and (j in [j1..j1+c1-1])
and     (i in [i2..i2+r2-1])and (j in [j2..j2+c2-1]) then a[i,j]:=3
else if (i in [i1..i1+r1-1])and (j in [j1..j1+c1-1]) then a[i,j]:=1
else if (i in [i2..i2+r2-1])and (j in [j2..j2+c2-1]) then a[i,j]:=2;
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
readln
end.

Объяснение кода листинга программы

  1. Объявляются переменные n, m, i, j, i1, j1, i2, j2, r1, c1, r2, c2:byte.
  2. Значения переменных n и m присваиваются соответствующим полям.
  3. Задаются начальные значения переменных i1, j1, i2, j2, r1, c1, r2, c2.
  4. Задается начальное значение для массива a[].
  5. Запускается цикл for i:=1 до n do for j:=1 до m do.
  6. Внутри цикла проверяется условие: если не выполняется хотя бы одно из условий, то a[i,j]:=0.
  7. Если выполняется хотя бы одно из условий, то a[i,j]:=3.
  8. Если выполняется еще одно из условий, то a[i,j]:=1.
  9. Если выполняется последнее из условий, то a[i,j]:=2.
  10. После завершения внутреннего цикла for i:=1 до n do for j:=1 до m do выводится значение a[i,j]:4.
  11. Выводится символ новой строки (writeln).
  12. Запускается внешний цикл for i:=1 до n do.
  13. После завершения внешнего цикла выводится символ новой строки (writeln).
  14. Программа завершается с помощью команды readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы