#13.2 Вложенные циклы для вывода матриц, таблиц -- примеры решения задач. Паскаль

В этом уроке мы продолжим разбирать тему вложенных циклов в Паскаль (начало разговора о вложенных циклах тут). И поработаем с выводом на экран таблиц, в частности, рисуя "флаги" с применением ASCII art-а.

Пример №1 -- заполнение матрицы символами

Задача:

вывести на экран "флаг" (матрицу $N \times N$, заполненную символами), вида:

- - - - - -
- - - - - -
- - - - - -
- - - - - -

Решение:

var m, i, j: integer;
begin
  m := 8; // размерность квадрата

  for i:=1 to m do // цикл запускающий вывод очередной строки
    begin
      for j:=1 to m do  // вывод символов в очередной строке
          write('- ');

      writeln(); // перенос строки
    end;

  readln();
end.   

Пример № 3 -- условие принадлежности главной и побочной диагонали матрицы

Рассмотрим пример решения задачи, выводящей на экран Андреевский флаг:

var m, i, j: integer;
begin
  m := 15; // начальное значение для счетчика внешнего цикла

  for i:=1 to m do
    begin
      for j:=1 to m do

        if (i = j) then  // условие принадлежности главной диагонали
          write('X ')
         { далее проверим условие принадлежности побочной диагонали }
        else if ((j = (m + 1 - i))  AND (i = (m + 1 - j))) then
             write('X ')
          else
          write('* ');

      writeln();
    end;

  readln();
end.    

Задачи для самостоятельного решения

  1. Составьте программу, которая выводит на экран прямоугольный флаг $N \times M$ вида (используйте циклы repeat):
    - - - - - -
    - - - - - -
    - - - - - -
    - - - - - -
    
  2. Составьте программу, которая выводит на экран прямоугольный флаг $N \times M$ вида (с полосками во второй и предпоследней строке, используйте циклы while):
    - - - - - -
    + + + + + +
    - - - - - -
    + + + + + +
    - - - - - -  
    
  3. Составьте программу, которая выводит на экран прямоугольный флаг $N \times M$ вида (с рамкой по краям):
    + + + + + +
    + - - - - +
    + - - - - +
    + + + + + +