Root /ArchiveAbout
()

Matrix 7 - 16

Matrix 7 - 16

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

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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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 нечетно

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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..255 A **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 нечетно

  1. **procedure** Randomize;: Инициализирует датчик псевдослучайных чисел.2) **procedure** Randomize(seed: integer);: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.
  2. **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 - целочисленное деление А на В