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