Умножить 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.

Объяснение кода листинга программы

  1. Создаются переменные a, c и несколько вспомогательных переменных i, j, m, k, p, q и s.
  2. В цикле repeat-until запрашивается размер матрицы n и проверяется его соответствие диапазону от 2 до 10.
  3. Выводится исходная матрица A.
  4. Задается размер матрицы n.
  5. В цикле 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.
  6. Задается номер столбца, который нужно умножить k.
  7. Задается число, на которое нужно умножить m.
  8. Выполняется цикл for-in-do для каждой строки матрицы A:
    • Вычисляется значение каждого элемента строки с помощью a[i,j]:=a[j,i]*m;.
    • Выводится значение элемента строки с помощью write(a[i,j]:4).
  9. Вычисляется матрица c, где каждый элемент равен соответствующему элементу матрицы A из строки, умноженной на m.
  10. Выводится матрица c.
  11. Задается счетчик k для цикла while.
  12. Инициализируется счетчик i и j для внутреннего цикла while.
  13. Пока i меньше или равно n и k равно нулю, выполняется следующая последовательность действий:
    • Вычисляется значение каждого элемента строки с помощью a[i,j]:=a[j,i];.
    • Выводится значение элемента строки с помощью write(a[i,j]:4).
    • Увеличивается значение счетчика i и/или j в зависимости от условий внутреннего цикла while.
  14. Если k равно единице, то выводится сообщение о наличии одинаковых чисел в матрице C.
  15. Если k равно нулю, то выводится сообщение о том, что в матрице C нет одинаковых чисел.
  16. Вычисляется сумма элементов побочной диагонали матрицы C.
  17. Выводится сумма элементов побочной диагонали матрицы C.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы