В матрице А(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.
Объяснение кода листинга программы
- Создается переменная m со значением 10.
- Создается тип данных matr, который представляет собой массив целых чисел размером от 0 до m-1 на 10.
- Создается процедура prnt, которая принимает на вход строку s, переменную x типа matr и число p. Процедура выводит элементы матрицы x в соответствии с указанным направлением.
- Создается функция comp_i, которая принимает на вход два числа x и p. Функция вычисляет кумулятивное произведение чисел от p до x, делит x на p, затем проверяет, является ли результат четным. Если результат нечетный, то обновляется значение x. В конце функция возвращает обновленное значение x.
- Создается переменная i, j и n.
- Запускается цикл, в котором пользователю предлагается ввести значение n от 1 до m. Значение n сохраняется в переменной n.
- Вычисляется матрица a размером n на n. Каждый элемент матрицы a генерируется случайным образом и записывается в соответствующую ячейку матрицы.
- Выводится исходная матрица a с помощью процедуры prnt.
- Инициализируется переменная j.
- Запускается цикл, в котором перебираются все элементы матрицы a. Если элемент в позиции (i/n, i%n) не является четным, то обновляется значение элемента в позиции (j/n, j%n) и увеличивается значение переменной j на 1.
- Для всех элементов матрицы a в позициях (j/n, j%n) записывается значение 0.
- Выводится результат в виде матрицы a с помощью процедуры prnt.
- Запрашивается ввод с клавиатуры.
- Выполняются все операции по обработке введенных данных.
- Выполняется вывод результата с помощью процедуры prnt.
- Выполняется чтение ввода с клавиатуры.
- Выполняются все операции по обработке введенных данных.
- Выполняется вывод результата с помощью процедуры prnt.
- Выполняется вывод сообщения об окончании работы программы.
- Завершается работа программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д