#13.2 Вложенные циклы для вывода матриц, таблиц -- примеры решения задач. Паскаль
Primary tabs
В этом уроке мы продолжим разбирать тему вложенных циклов в Паскаль (начало разговора о вложенных циклах тут). И поработаем с выводом на экран таблиц, в частности, рисуя "флаги" с применением 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.
Пример №2 -- условие принадлежности главной и побочной диагонали матрицы
Рассмотрим пример решения задачи, выводящей на экран Андреевский флаг:
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.
Задачи для самостоятельного решения
- Составьте программу, которая выводит на экран прямоугольный флаг $N \times M$ вида (используйте циклы repeat):
- - - - - - - - - - - - - - - - - - - - - - - -
- Составьте программу, которая выводит на экран прямоугольный флаг $N \times M$ вида (c чередованием плюсов и минусов в строках, используйте циклы while):
- - - - - - + + + + + + - - - - - - + + + + + + - - - - - -
- Составьте программу, которая выводит на экран прямоугольный флаг $N \times M$ вида (с рамкой по краям):
+ + + + + + + - - - - + + - - - - + + + + + + +
-
Подготовительная задача для "счет"
Пользователь вводит число от 1 до 9, вывести его в представлении как счетах со сдвинутыми костями (всего десять костей на спице), например:
- если ноль, то все кости справа:
---++++++++++
- если три, то значащая часть слева, а все отстальное справа:
+++---+++++++
- если девять:
+++++++++---+
- если ноль, то все кости справа:
-
Предварительная справка: настоящие счеты выглядят как-то так (кости, с помощью которых отсчитывают число разрядов, нанизаны на спицы):
В некоем виртуальном пространстве есть виртуальные, опять же, ASCII-счеты, с 7-ю спицами по 10 костяшек на каждой, в сброшенном состоянии (условный ноль) они выглядят так:
---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++
Задание: визуализируйте на счетах введенное пользователем число.
Примеры:
-
Пользователь вводит: 7
Получаем:---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++ +++++++---+++
-
Пользователь вводит: 28
Получаем:---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++ ---++++++++++ ++---++++++++ ++++++++---++
-
Пользователь вводит: 1984
Получаем:---++++++++++ ---++++++++++ ---++++++++++ +---+++++++++ +++++++++---+ ++++++++---++ ++++---++++++
-
Пользователь вводит: 2021
А наша программа отвечает:---++++++++++ ---++++++++++ ---++++++++++ ++---++++++++ ---++++++++++ ++---++++++++ +---+++++++++
ПРИМЕЧАНИЕ: задача была предложена участником @math2 для соревнований IFF 2020.
-
Пользователь вводит: 7
- Пользователь задает целое положительное число N, выведите матрицу из чисел, размером N, на N, так чтобы элементы ее главной диагонали были заменены, звездочками, напр.
для N = 3, мы должны получить:* 2 3 1 * 3 1 2 *
- Пользователь задает целое положительное N, выведите матрицу из чисел, размером N, на N, так чтобы элементы ее побочной диагонали были заменены, звездочками, напр.:
- для N = 3, мы должны получить:
1 2 * 1 * 3 * 2 3
-
для N = 4, мы должны получить:
1 2 3 * 1 2 * 4 1 * 3 4 * 2 3 4
- для N = 3, мы должны получить:
- Пользователь задает целое положительное число N, выведите матрицу из чисел, размером N на N, так чтобы элементы ее и главной и побочной диагонали были заменены, звездочками, напр.
- для N = 3, мы должны получить:
* 2 * 1 * 3 * 2 *
-
для N = 4, мы должны получить:
* 2 3 * 1 * * 4 1 * * 4 * 2 3 *
- для N = 3, мы должны получить:
Проверочные задачи (решать не обязательно):
- Log in to post comments
- 12156 reads