В матрице А(N,N) уплотнить все четные элементы в направлении указанном на рисунке - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть задача: В матрице А(N,N) уплотнить все четные элементы в направлении указанном на рисунке. Остальные элементы сделать равными нулю. Код:
Мне нужно поменять так, чтобы программа заполняла эти элементы в обратном направлении как на этом рисунке: Заранее спасибо!

Решение задачи: «В матрице А(N,N) уплотнить все четные элементы в направлении указанном на рисунке»

textual
Листинг программы
const m = 10;
 
type matr = array [0..m-1, 0..m-1] of integer;
 
procedure prnt(s: string; var x: matr; p: integer);
var i, j: integer;
begin
  writeln(s);
  for i := 0 to p - 1 do
    begin
      for j := 0 to p - 1 do write(x[i, j]:4);
      writeln
    end
end;
 
function comp_i(x, p: integer): integer;
var q: integer;
begin
  q := p - x div p;
  x := x mod p;
  if not odd(q) then x := p - x - 1;
  comp_i := x
end;
 
var i, j, n: integer;
    a: matr;
begin
  randomize;
  repeat
    write('n in [1..', m, '];  n = ');
    readln(n)
  until n in [1..m];
  writeln();
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
      a[i, j] := random(99) + 1;
  prnt('Source matrix:', a, n);
  j := 0;
  for i := 0 to n * n - 1 do
    if not odd(a[comp_i(i, n), i div n])
      then begin
        a[comp_i(j, n), j div n] := a[comp_i(i, n), i div n];
        inc(j)
      end;
  for i := j to n * n - 1 do a[comp_i(i, n), i div n] := 0;
  prnt('Result:', a, n);
  readln
end.

Объяснение кода листинга программы

  1. Создается переменная m со значением 10.
  2. Создается тип данных matr, который представляет собой массив целых чисел размером от 0 до m-1 на 10.
  3. Создается процедура prnt, которая принимает на вход строку s, переменную x типа matr и число p. Процедура выводит элементы матрицы x в соответствии с указанным направлением.
  4. Создается функция comp_i, которая принимает на вход два числа x и p. Функция вычисляет кумулятивное произведение чисел от p до x, делит x на p, затем проверяет, является ли результат четным. Если результат нечетный, то обновляется значение x. В конце функция возвращает обновленное значение x.
  5. Создается переменная i, j и n.
  6. Запускается цикл, в котором пользователю предлагается ввести значение n от 1 до m. Значение n сохраняется в переменной n.
  7. Вычисляется матрица a размером n на n. Каждый элемент матрицы a генерируется случайным образом и записывается в соответствующую ячейку матрицы.
  8. Выводится исходная матрица a с помощью процедуры prnt.
  9. Инициализируется переменная j.
  10. Запускается цикл, в котором перебираются все элементы матрицы a. Если элемент в позиции (i/n, i%n) не является четным, то обновляется значение элемента в позиции (j/n, j%n) и увеличивается значение переменной j на 1.
  11. Для всех элементов матрицы a в позициях (j/n, j%n) записывается значение 0.
  12. Выводится результат в виде матрицы a с помощью процедуры prnt.
  13. Запрашивается ввод с клавиатуры.
  14. Выполняются все операции по обработке введенных данных.
  15. Выполняется вывод результата с помощью процедуры prnt.
  16. Выполняется чтение ввода с клавиатуры.
  17. Выполняются все операции по обработке введенных данных.
  18. Выполняется вывод результата с помощью процедуры prnt.
  19. Выполняется вывод сообщения об окончании работы программы.
  20. Завершается работа программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы