Умножить l-й столбец матрицы А на заданное число - Pascal
Формулировка задачи:
Выполнить над квадратной матрицей А порядка n последовательность действий:
а) Умножить l-й столбец матрицы А на заданное число;
б) сформировать матрицу С, транспонированную по отношению к полученной в результате предыдущего преобразования;
в) если среди элементов С матрицы есть равные, найти ее след; в противном случае найти сумму элементов побочной диагонали.
Помогите пожалуйста по заданию дописать программу начиная с пункта "б":
Var
a:array [1..10,1..10]of integer;
i,j,m:integer;
begin
randomize;
for i:=1 to 10 do
for j :=1 to 10 do
a[i,j]:=random(10)+1;
for i:=1 to 4 do
begin
for j:=1 to 4 do
write(a[i,j],' ');
writeln;
end;
writeln('введите число на которое надо умножить');
readln(m);
for i:= 1 to 4 do
a[i,1]:=a[i,1]*m;
for i:=1 to 4 do
begin for j:=1 to 4 do
write(a[i,j],' ');
writeln;
end;
end.Решение задачи: «Умножить l-й столбец матрицы А на заданное число»
textual
Листинг программы
var a,c:array [1..10,1..10]of integer;
n,i,j,m,k,p,q,s:integer;
begin
randomize;
repeat
write('Введите размер матрицы от 2 до 10 n=');
readln(n);
until n in [2..10];
writeln('Исходная матрица A');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=1+random(30);
write(a[i,j]:4);
end;
writeln;
end;
repeat
write('Введите номер столбца, котороый нужно умножить k=');
readln(k);
until k in [1..n];
write('введите число на которое надо умножить m=');
readln(m);
writeln('Умножние столбца ',k,' на число ',m);
for i:=1 to n do
begin
for j:=1 to n do
begin
if j=k then a[i,k]:=a[i,k]*m;
write(a[i,j]:4);
end;
writeln;
end;
writeln('Матрица С');
for i:=1 to n do
begin
for j:=1 to n do
begin
c[i,j]:=a[j,i];
write(c[i,j]:4);
end;
writeln;
end;
k:=0;
i:=1;
while(i<=n)and(k=0) do
begin
j:=1;
while(j<=n)and(k=0) do
begin
p:=1;
while(p<=n)and(k=0) do
begin
q:=1;
while(q<=n)and(k=0) do
if (p<>i)and(q<>j)and(a[i,j]=a[p,q])then k:=1
else inc(q);
if k=0 then inc(p);
end;
if k=0 then inc(j);
end;
if k=0 then inc(i);
end;
if k=1 then
begin
writeln('В матрице С есть одинаковые числа');
s:=0;
for i:=1 to n do
s:=s+a[i,i];
write('Ее след=',s);
end
else
begin
writeln('В матрице С нет одинаковых чисел');
s:=0;
for i:=1 to n do
s:=s+a[i,n-i+1];
write('Сумма элементов побочной диагонали=',s);
end;
end.
Объяснение кода листинга программы
- Создаются переменные
a,cи несколько вспомогательных переменныхi,j,m,k,p,qиs. - В цикле
repeat-untilзапрашивается размер матрицыnи проверяется его соответствие диапазону от 2 до 10. - Выводится исходная матрица
A. - Задается размер матрицы
n. - В цикле
for-in-doдля каждой строки матрицыAвыполняется следующая последовательность действий:- Вычисляется значение каждого элемента строки с помощью
a[i,j]:=1+random(30). - Выводится значение элемента строки с помощью
write(a[i,j]:4). - Выполняется проверка
if j=k then a[i,k]:=a[i,k]*m;. Если условие истинно, то значение элемента умножается наm.
- Вычисляется значение каждого элемента строки с помощью
- Задается номер столбца, который нужно умножить
k. - Задается число, на которое нужно умножить
m. - Выполняется цикл
for-in-doдля каждой строки матрицыA:- Вычисляется значение каждого элемента строки с помощью
a[i,j]:=a[j,i]*m;. - Выводится значение элемента строки с помощью
write(a[i,j]:4).
- Вычисляется значение каждого элемента строки с помощью
- Вычисляется матрица
c, где каждый элемент равен соответствующему элементу матрицыAиз строки, умноженной наm. - Выводится матрица
c. - Задается счетчик
kдля циклаwhile. - Инициализируется счетчик
iиjдля внутреннего циклаwhile. - Пока
iменьше или равноnиkравно нулю, выполняется следующая последовательность действий:- Вычисляется значение каждого элемента строки с помощью
a[i,j]:=a[j,i];. - Выводится значение элемента строки с помощью
write(a[i,j]:4). - Увеличивается значение счетчика
iи/илиjв зависимости от условий внутреннего циклаwhile.
- Вычисляется значение каждого элемента строки с помощью
- Если
kравно единице, то выводится сообщение о наличии одинаковых чисел в матрицеC. - Если
kравно нулю, то выводится сообщение о том, что в матрицеCнет одинаковых чисел. - Вычисляется сумма элементов побочной диагонали матрицы
C. - Выводится сумма элементов побочной диагонали матрицы
C.