На предыдущей странице мы рассматривали простейшие случаи формирования матриц по некоторому правилу. Здесь же мы рассмотрим вывод элементов сформированной матрицы в различном порядке.
Matrix7. Дана матрица размера M × N и целое число K (1 ≤ K ≤ M). Вывести элементы K-й строки данной матрицы.
var
A: array[1..10, 1..10] of integer;
i, j, M, N, K: byte;
begin
writeln('Введите M, N:');
readln(M, N);
writeln('Случайная матрица порядка ', M, ' x ', N, ':');
{ Формируем случайную матрицу: }
randomize;
for i := 1 to M do begin
for j := 1 to N do begin
{ Случайное число с интервала [0, 99]: }
a[i, j] := random(100);
write(a[i, j]:5)
end;
writeln
end;
writeln('Введите K (1 ≤ K ≤ ', M, '):');
readln(K);
writeln('Вывводим ', K, '-ю строку матрицы:');
for j := 1 to N do
write(a[K, j]:5);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1). Matrix8. Дана матрица размера M × N и целое число K (1 ≤ K ≤ N). Вывести элементы K-го столбца данной матрицы.
var
A: array[1..10, 1..10] of integer;
i, j, M, N, K: byte;
begin
writeln('Введите M, N:');
readln(M, N);
writeln('Случайная матрица порядка ', M, ' x ', N, ':');
{ Формируем случайную матрицу: }
randomize;
for i := 1 to M do begin
for j := 1 to N do begin
{ Случайное число с интервала [0, 99]: }
a[i, j] := random(100);
write(a[i, j]:5)
end;
writeln
end;
writeln('Введите K (1 ≤ K ≤ ', N, '):');
readln(K);
writeln('Вывводим ', K, '-й столбец матрицы:');
for i := 1 to M do
writeln(a[i, K]);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1). Matrix9. Дана матрица размера M × N. Вывести ее элементы, расположенные в строках с четными номерами (2, 4, …). Вывод элементов производить по строкам, условный оператор не использовать.
var
A: array[1..10, 1..10] of integer;
i, j, M, N: byte;
begin
writeln('Введите M, N:');
readln(M, N);
writeln('Случайная матрица порядка ', M, ' x ', N, ':');
{ Формируем и выводим матрицу: }
randomize; //генератор псевдослучайных чисел
for i := 1 to M do begin
for j := 1 to N do begin
{ Случайное число с интервала [0, 49]: }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end;
writeln;
writeln('Выводим элементы в четных строках:');
i := 2; { минимальное четный номер строки }
while i <= M do begin
for j := 1 to N do write(a[i, j]:4);
i := i + 2 { увеличиваем номер строки на 2 }
end;
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1). Matrix10. Дана матрица размера M × N. Вывести ее элементы, расположенные в столбцах с нечетными номерами (1, 3, …). Вывод элементов производить по столбцам, условный оператор не использовать.
var
A: array[1..10, 1..10] of integer;
i, j, M, N: byte;
begin
writeln('Введите M, N:');
readln(M, N);
writeln('Случайная матрица порядка ', M, ' x ', N, ':');
{ Формируем и выводим матрицу: }
randomize; { генератор псевдослучайных чисел }
for i := 1 to M do begin
for j := 1 to N do begin
{ Случайное число с интервала [0, 49] }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end;
writeln;
writeln('Выводим элементы в нечетных столбцах:');
j := 1; { минимальный нечетный номер столбца }
while j <= N do begin
for i := 1 to M do
write(' ', a[i, j]);
j := j + 2 { увеличиваем номер столбца на 2 }
end;
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1). Matrix11. Дана матрица размера M × N. Вывести ее элементы в следующем порядке: первая строка слева направо, вторая строка справа налево, третья строка слева направо, четвертая строка справа налево и т. д.
var
A: array[1..10, 1..10] of integer;
i, j, M, N: byte;
begin
writeln('Введите M, N:');
readln(M, N);
writeln('Случайная матрица порядка ', M, ' x ', N, ':');
{ Формируем и выводим матрицу: }
randomize; { генератор псевдослучайных чисел }
for i := 1 to M do begin
for j := 1 to N do begin
{ Случайное число с интервала [0, 49]: }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end;
writeln;
writeln('Выводим элементы в разном порядке:');
for i := 1 to M do
if (i mod 2 = 1) then { нечетные строки }
for j := 1 to N do { слева направо }
write(' ', a[i, j])
else { четные строки }
for j := N downto 1 do { справа налево }
write(' ', a[i, j]);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1).A **mod** B
- остаток при целочисленном делении А на В Matrix12. Дана матрица размера M × N. Вывести ее элементы в следующем порядке: первый столбец сверху вниз, второй столбец снизу вверх, третий столбец сверху вниз, четвертый столбец снизу вверх и т. д.
var
A: array[1..10, 1..10] of integer;
i, j, M, N: byte;
begin
writeln('Введите M, N:');
readln(M, N);
writeln('Случайная матрица порядка ', M, ' x ', N, ':');
{ Формируем и выводим матрицу: }
randomize; { генератор псевдослучайных чисел }
for i := 1 to M do begin
for j := 1 to N do begin
{ Случайное число с интервала [0, 49]: }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end;
writeln;
writeln('Выводим элементы в разном порядке:');
for j := 1 to N do
if odd(j) then { нечетные столбцы }
for i := 1 to M do { сверху вниз }
write(' ', a[i, j])
else { четные столбцы }
for i := M downto 1 do { снизу вверх }
write(' ', a[i, j]);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1).**function** Odd(i: integer): boolean;
: Возвращает True, если i нечетно Matrix13. Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы следующим образом («уголками»): все элементы первой строки; элементы последнего столбца, кроме первого (уже выведенного) элемента; оставшиеся элементы второй строки; оставшиеся элементы предпоследнего столбца и т. д.; последним выводится элемент AM,1.
var
A: array[1..10, 1..10] of integer;
i, j, k, M: byte;
begin
writeln('Введите размер матрицы:');
readln(M);
writeln('Случайная матрица порядка ', M, ' x ', M, ':');
{ Формируем и выводим матрицу: }
randomize; { генератор псевдослучайных чисел }
for i := 1 to M do begin
for j := 1 to M do begin
{ Случайное число с интервала [0, 49]: }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end;
writeln;
writeln('Выводим элементы "уголками":');
for i := 1 to M do begin
for j := 1 to M + 1 - i do
write(' ', a[i, j]);
for k := i + 1 to M do
write(' ', a[k, M + 1 - i])
end;
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1). Matrix14. Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы следующим образом («уголками»): все элементы первого столбца; элементы последней строки, кроме первого (уже выведенного) элемента; оставшиеся элементы второго столбца; оставшиеся элементы предпоследней строки и т. д.; последним выводится элемент A1,M.
var
A: array[1..10, 1..10] of integer;
i, j, k, M: byte;
begin
writeln('Введите размер матрицы A:');
readln(M);
writeln('Случайная матрица порядка ', M, ' x ', M, ':');
{ Формируем и выводим матрицу: }
randomize; { генератор псевдослучайных чисел }
for i := 1 to M do begin
for j := 1 to M do begin
{ Случайное число с интервала [0, 49]: }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end;
writeln;
writeln('Выводим элементы "уголками":');
for j := 1 to M do begin
for i := 1 to M + 1 - j do
write(' ', a[i, j]);
for k := j + 1 to M do
write(' ', a[M + 1 - j, k])
end;
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1). Matrix15. Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь по часовой стрелке, вывести все ее элементы по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся элементы второй строки и т. д.; последним выводится центральный элемент матрицы.
var
A: array[1..10, 1..10] of integer;
i, j, k, M: byte;
begin
writeln('Введите размер M матрицы A (M - нечетное число):');
{ Вводим М нечетное, положительное и не больше 10: }
repeat
readln(M);
until odd(M) and (M > 0) and (M < 11);
writeln('Случайная матрица порядка ', M, ' x ', M, ':');
{ Формируем и выводим матрицу: }
randomize; { генератор псевдослучайных чисел }
for i := 1 to M do begin
for j := 1 to M do begin
{ Случайное число с интервала [0, 49]: }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end;
writeln;
writeln('Выводим элементы по спирали, ',
'начиная с А11 по часовой стрелке:');
for k := 1 to (M div 2 + 1) do begin
for j := k to M + 1 - k do { слева направо }
write(' ', a[k, j]);
for i := k + 1 to M + 1 - k do { сверху вниз }
write(' ', a[i, j]); { j = M + 1 - k }
for j := M - k downto k do { справа налево }
write(' ', a[i, j]); { i = M + 1 - k }
for i := M - k downto k + 1 do { снизу вверх }
write(' ', a[i, j]) { j = k }
end;
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**function** Odd(i: integer): boolean;
: Возвращает True, если i нечетно
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1).A **div** B
- целочисленное деление А на В * * *
Ниже приведено решение предыдущей задачи Matrix15, но только с процедурами:
type { Описываем тип матрицы: }
Matrix = array[1..10, 1..10] of integer;
procedure VvodMatr(var A: Matrix; M: byte);
var
i, j: byte;
begin
{ Формируем и выводим матрицу: }
randomize; { генератор псевдослучайных чисел }
for i := 1 to M do begin
for j := 1 to M do begin
{ Случайное число с интервала [0, 49]: }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end
end;
procedure MatrPoSpiraly(A: Matrix; M: byte);
var
i, j, k: byte;
begin
for k := 1 to (M div 2 + 1) do begin
for j := k to M + 1 - k do { слева направо }
write(' ', a[k, j]);
for i := k + 1 to M + 1 - k do { сверху вниз }
write(' ', a[i, j]); { j = M + 1 - k }
for j := M - k downto k do { справа налево }
write(' ', a[i, j]); { i = M + 1 - k }
for i := M - k downto k + 1 do { снизу вверх }
write(' ', a[i, j]) { j = k }
end;
end;
var
A: Matrix;
M: byte;
begin
writeln('Введите размер M матрицы A (M - нечетное число):');
{ Вводим М нечетное, положительное и не больше 10: }
repeat
readln(M);
until odd(M) and (M > 0) and (M < 11);
writeln('Случайная матрица порядка ', M, ' x ', M, ':');
{ Формирование и вывод матрицы: }
VvodMatr(A, M);
writeln;
writeln('Выводим элементы по спирали, ',
'начиная с А11 по часовой стрелке:');
{ Вывод элементов по спирали: }
MatrPoSpiraly(A, M);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1).**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255A **div** B
- целочисленное деление А на В**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**function** Odd(i: integer): boolean;
: Возвращает True, если i нечетно Matrix16. Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь против часовой стрелки, вывести все ее элементы по спирали: первый столбец, последняя строка, последний столбец в обратном порядке, первая строка в обратном порядке, оставшиеся элементы второго столбца и т. д.; последним выводится центральный элемент матрицы.
var
A: array[1..10, 1..10] of integer;
i, j, k, M: byte;
begin
writeln('Введите размер M матрицы A (M - нечетное число):');
{ Выходим, если М нечетное, положительное и не больше 10: }
repeat
readln(M);
until odd(M) and (M > 0) and (M < 11);
writeln('Случайная матрица порядка ', M, ' x ', M, ':');
{ Формируем и выводим матрицу: }
randomize; { генератор псевдослучайных чисел }
for i := 1 to M do begin
for j := 1 to M do begin
{ Случайное число с интервала [0, 49]: }
a[i, j] := random(50);
write(a[i, j]:4)
end;
writeln
end;
writeln;
writeln('Выводим элементы по спирали, ',
'начиная с А11 против часовой стрелки:');
for k := 1 to (M div 2 + 1) do begin
for i := k to M + 1 - k do //сверху вниз
write(' ', a[i, k]);
for j := k + 1 to M + 1 - k do //слева направо
write(' ', a[i, j]);
for i := M - k downto k do //снизу вверх
write(' ', a[i, j]);
for j := M - k downto k + 1 do //справа налево
write(' ', a[i, j])
end;
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**function** Odd(i: integer): boolean;
: Возвращает True, если i нечетно
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1).A **div** B
- целочисленное деление А на В