Прибавить к k-ой строке матрицы А ее l-ю строку, умноженную на заданное число - Turbo Pascal
Формулировка задачи:
а) Прибавить к k-ой строке матрицы А ее l-ю строку, умноженную на заданное число;
б) сформировать вектор V, элементами которого являются суммы элементов строк полученной
матрицы;
в) упорядочить элементы V в порядке убывания.
Решение задачи: «Прибавить к k-ой строке матрицы А ее l-ю строку, умноженную на заданное число»
textual
Листинг программы
const mn=100;
var
a: array [1..mn,1..mn] of Real;
v: array [1..mn] of Real;
c: Real;
i, j, k, l, n: Integer;
begin
Randomize;
repeat Write('N [2..',mn,']: '); Read(n); until n in [2..100];
WriteLn('Матрица ',n,'x',n,':');
for i:=1 to n do begin
for j:=1 to n do begin a[i,j]:=Random*100; Write(' ',a[i,j]:7:1); end; WriteLn;
end;
repeat Write('k, l [1..',n,'], c: '); ReadLn(k,l,c); until (k in [1..n]) and (l in [1..n]);
for j:=1 to n do a[k,j]:=a[k,j]+a[l,j]*c;
WriteLn('Результат:');
for i:=1 to n do begin
for j:=1 to n do Write(' ',a[i,j]:7:1); WriteLn;
end;
for i:=1 to n do for j:=1 to n do v[i]:=v[i]+a[i,j];
WriteLn('V ='); for i:=1 to n do Write(' ',v[i]:7:1); WriteLn;
for i:=2 to n do for j:=i downto 2 do
if v[i-1]<v[i] then begin
c:=v[i-1]; v[i-1]:=v[i]; v[i]:=c;
end;
WriteLn('V''='); for i:=1 to n do Write(' ',v[i]:7:1); WriteLn;
end.
Объяснение кода листинга программы
- Создается константа mn, которая равна 100.
- Создается переменная a, которая является матрицей размером от 1 до mn на 1 до mn. Значения ячеек матрицы устанавливаются случайным образом.
- Создается переменная v, которая является вектором размером от 1 до mn. Значения ячеек вектора устанавливаются суммой соответствующих ячеек матрицы.
- Создается переменная c, которая является числом для умножения строки матрицы на.
- Создаются переменные i, j, k, l и n, которые являются интерактивными переменными для ввода данных пользователем.
- В цикле while считывается число n от пользователя.
- Выводится сообщение
Матрица nxn:, где n — введенное пользователем число. - Для каждой строки матрицы a выполняется цикл while, который считывает число k от пользователя.
- Выводится сообщение
k, l [1..n], c:, где n — введенное пользователем число, а c — число для умножения строки матрицы на. - Считывается число l от пользователя.
- Выполняется операция a[k,j]:=a[k,j]+a[l,j]*c, где j — индекс строки матрицы, которую нужно прибавить к k-ой строке.
- Выводится сообщение
Результат:, после чего выводится каждая ячейка матрицы a. - Для каждой строки матрицы a выполняется цикл while, который считывает индекс j от пользователя.
- Выполняется операция v[i]:=v[i]+a[i,j], где i — индекс строки матрицы, которую нужно прибавить к v.
- Выводится сообщение
V =, после чего выводится каждая ячейка вектора v. - Для каждой строки вектора v выполняется цикл while, который считывает индекс i от пользователя.
- Если значение в ячейке v[i-1] меньше значения в ячейке v[i], то выполняется операция c:=v[i-1], v[i-1]:=v[i], v[i]:=c, где i — индекс строки вектора v.
- Выводится сообщение
V'=, после чего выводится каждая ячейка вектора v.