На основе элементов исходной матрицы вычислить значение выражения по заданному правилу - Free Pascal
Формулировка задачи:
1)Дана действительная квадратная матрица порядка n. Получить X1Xn+X2Xn-1+...+XnX1, где Xk-наибольшее значение параметров k-й строки данной матрицы от первого до k-го элемента.
Решение задачи: «На основе элементов исходной матрицы вычислить значение выражения по заданному правилу»
textual
Листинг программы
const m = 19;
var a: array [1..m, 1..m] of integer;
x: array [1..m] of integer;
n, i, j: integer;
s: int64;
begin
randomize;
repeat
write('n in [1..', m, ']; n = ');
readln(n)
until (n >= 1) and (n <= m);
writeln('Source matrix:');
for i := 1 to n do
begin
for j := 1 to n do
begin
a[i, j] := -99 + random(199);
write(a[i, j]:4)
end;
writeln
end;
for i := 1 to n do
begin
x[i] := a[i, 1];
for j := 2 to i do
if x[i] < a[i, j] then x[i] := a[i, j]
end;
s := 0;
for i := 1 to n div 2 do s := s + x[i] * x[n - i + 1];
s := 2 * s;
if odd(n) then s := s + sqr(x[n div 2 + 1]);
write('s = ', s);
readln
end.
Объяснение кода листинга программы
В этом коде:
- Объявлены следующие переменные:
m- размерность матрицы (19);a- матрица (19x19);x- массив (19);n, i, j- счётчики;s- сумма;int64- тип данных для переменнойs(целочисленный с плавающей точкой).
- Выполняется заполнение матрицы
aслучайными числами от -99 до 99. - Выполняется цикл, в котором пользователь вводит число
nот 1 до 19. - Выводится исходная матрица
a(значения разделены пробелами, строки переносятся на новую строку). - В первой половине массива
xсохраняются значения главной диагонали матрицыa. - Во второй половине массива
xсохраняются максимальные значения из соответствующих столбцов матрицыa. - Выполняется цикл, в котором вычисляется сумма
sэлементов массиваx. - Если число
nнечётное, то кsдобавляется квадрат последнего элемента массиваx. - Выводится значение переменной
s. - Программа ожидает ввода с клавиатуры.