Умножить 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д