ВВЕРХ
ВНИЗ
  • Home
  • Matrix
  • Matrix 7 - 16

Matrix 7 - 16

На предыдущей странице мы рассматривали простейшие случаи формирования матриц по некоторому правилу. Здесь же мы рассмотрим вывод элементов сформированной матрицы в различном порядке.

Matrix7. Дана матрица размера M × N и целое число K (1 ≤ K ≤ M). Вывести элементы K-й строки данной матрицы.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
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.

Matrix8. Дана матрица размера M × N и целое число K (1 ≤ K ≤ N). Вывести элементы K-го столбца данной матрицы.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
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.

Matrix9. Дана матрица размера M × N. Вывести ее элементы, расположенные в строках с четными номерами (2, 4, …). Вывод элементов производить по строкам, условный оператор не использовать.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
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.

Matrix10. Дана матрица размера M × N. Вывести ее элементы, расположенные в столбцах с нечетными номерами (1, 3, …). Вывод элементов производить по столбцам, условный оператор не использовать.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
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.

Matrix11. Дана матрица размера M × N. Вывести ее элементы в следующем порядке: первая строка слева направо, вторая строка справа налево, третья строка слева направо, четвертая строка справа налево и т. д.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
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.

Matrix12. Дана матрица размера M × N. Вывести ее элементы в следующем порядке: первый столбец сверху вниз, второй столбец снизу вверх, третий столбец сверху вниз, четвертый столбец снизу вверх и т. д.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
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.

Matrix13. Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы следующим образом («уголками»): все элементы первой строки; элементы последнего столбца, кроме первого (уже выведенного) элемента; оставшиеся элементы второй строки; оставшиеся элементы предпоследнего столбца и т. д.; последним выводится элемент AM,1.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
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.

Matrix14. Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы следующим образом («уголками»): все элементы первого столбца; элементы последней строки, кроме первого (уже выведенного) элемента; оставшиеся элементы второго столбца; оставшиеся элементы предпоследней строки и т. д.; последним выводится элемент A1,M.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
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.

Matrix15. Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь по часовой стрелке, вывести все ее элементы по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся элементы второй строки и т. д.; последним выводится центральный элемент матрицы.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
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.

*   *   *

Ниже приведено решение предыдущей задачи Matrix15, но только с процедурами:

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
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.

Matrix16. Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь против часовой стрелки, вывести все ее элементы по спирали: первый столбец, последняя строка, последний столбец в обратном порядке, первая строка в обратном порядке, оставшиеся элементы второго столбца и т. д.; последним выводится центральный элемент матрицы.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
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.


Яндекс.Метрика