Преобразовать исходную матрицу в новую по формуле - 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, чтобы преобразовать матрицу обратно в исходное состояние. - Выводится сообщение с результатом выполнения программы.