Преобразовать исходную матрицу в новую по формуле - Pascal ABC
Формулировка задачи:
Вычислить сумму элементов главной диагонали матрицы В (MxМ), М<=17. Если сумма окажется >10 , то исходную матрицу преобразовать по формуле
В(I,J) = В(I,J) + 3.5,
если сумма будет ≤10, то преобразование выполнить по формуле
В(I,J) = В(I,J) – 3.5.
Вычисленную сумму и элементы преобразованной матрицы вывести на экран
Решение задачи: «Преобразовать исходную матрицу в новую по формуле»
textual
Листинг программы
const m = 17; type mas = array[1..m, 1..m] of real; var n: integer; S: real; procedure vv_preobr(var x: mas; f: boolean); var i, j: integer; begin if f then S := 0; for i := 1 to n do begin for j := 1 to n do if f then //Формируем массив и вычисляем сумму begin x[i, j] := -random * 5 + random(16); write(x[i, j]:7:2); if i = j then S := S + x[i, j] end else //Преобразовываем массив begin if S > 10 then x[i, j] := x[i, j] + 3.5 else x[i, j] := x[i, j] - 3.5; write(x[i, j]:7:2) end; writeln end end; var a: mas; begin randomize; repeat writeln('n=?, n<=17'); readln(n) until (n > 1) and (n <= 17); writeln('A:'); vv_preobr(a, true); writeln('summa = ', S:0:3); writeln('A'':'); vv_preobr(a, false); readln end.
Объяснение кода листинга программы
- В начале кода объявляются необходимые переменные и константы.
- Создается тип данных
mas
, который представляет собой массив целых чисел размером от 1 до 17. - Объявляется переменная
n
типаinteger
, которая будет использоваться для чтения размеров матрицы от пользователя. - Объявляется переменная
S
типаreal
, которая будет использоваться для хранения суммы элементов матрицы. - Создается процедура
vv_preobr
, которая принимает две переменные:x
иf
. Переменнаяx
также является массивом типаmas
. - Внутри процедуры
vv_preobr
объявляются две переменныеi
иj
типаinteger
. - В цикле
for
происходит следующее:- Если значение переменной
f
равно истине, то вычисляется случайное число от -5 до 5 и присваивается элементуx[i, j]
. Также выводится значениеx[i, j]
на экран. - Если значение переменной
f
равно ложью, то значениеx[i, j]
увеличивается на 3.5 или уменьшается на 3.5 в зависимости от значения переменнойS
. Значениеx[i, j]
также выводится на экран. - После выполнения цикла
for
выводится значение переменнойS
на экран.
- Если значение переменной
- В основной части кода считывается размер матрицы от пользователя.
- Вызывается процедура
vv_preobr
с аргументомtrue
, чтобы преобразовать матрицу по заданной формуле. - Вызывается процедура
vv_preobr
с аргументомfalse
, чтобы преобразовать матрицу обратно в исходное состояние. - Выводится сообщение с результатом выполнения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д