Умножить l-й столбец матрицы А на заданное число - Pascal

Узнай цену своей работы

Формулировка задачи:

Выполнить над квадратной матрицей А порядка n последовательность действий: а) Умножить l-й столбец матрицы А на заданное число; б) сформировать матрицу С, транспонированную по отношению к полученной в результате предыдущего преобразования; в) если среди элементов С матрицы есть равные, найти ее след; в противном случае найти сумму элементов побочной диагонали. Помогите пожалуйста по заданию дописать программу начиная с пункта "б":
Листинг программы
  1. Var
  2. a:array [1..10,1..10]of integer;
  3. i,j,m:integer;
  4. begin
  5. randomize;
  6. for i:=1 to 10 do
  7. for j :=1 to 10 do
  8. a[i,j]:=random(10)+1;
  9. for i:=1 to 4 do
  10. begin
  11. for j:=1 to 4 do
  12. write(a[i,j],' ');
  13. writeln;
  14. end;
  15. writeln('введите число на которое надо умножить');
  16. readln(m);
  17. for i:= 1 to 4 do
  18. a[i,1]:=a[i,1]*m;
  19. for i:=1 to 4 do
  20. begin for j:=1 to 4 do
  21. write(a[i,j],' ');
  22. writeln;
  23. end;
  24. end.

Решение задачи: «Умножить l-й столбец матрицы А на заданное число»

textual
Листинг программы
  1. var a,c:array [1..10,1..10]of integer;
  2.     n,i,j,m,k,p,q,s:integer;
  3. begin
  4. randomize;
  5. repeat
  6. write('Введите размер матрицы от 2 до 10 n=');
  7. readln(n);
  8. until n in [2..10];
  9. writeln('Исходная матрица A');
  10. for i:=1 to n do
  11.  begin
  12.   for j:=1 to n do
  13.    begin
  14.     a[i,j]:=1+random(30);
  15.     write(a[i,j]:4);
  16.    end;
  17.   writeln;
  18.  end;
  19. repeat
  20. write('Введите номер столбца, котороый нужно умножить k=');
  21. readln(k);
  22. until k in [1..n];
  23. write('введите число на которое надо умножить m=');
  24. readln(m);
  25. writeln('Умножние столбца ',k,' на число ',m);
  26. for i:=1 to n do
  27.  begin
  28.   for j:=1 to n do
  29.    begin
  30.     if j=k then a[i,k]:=a[i,k]*m;
  31.     write(a[i,j]:4);
  32.    end;
  33.   writeln;
  34.  end;
  35. writeln('Матрица С');
  36. for i:=1 to n do
  37.  begin
  38.   for j:=1 to n do
  39.    begin
  40.     c[i,j]:=a[j,i];
  41.     write(c[i,j]:4);
  42.    end;
  43.   writeln;
  44.  end;
  45. k:=0;
  46. i:=1;
  47. while(i<=n)and(k=0) do
  48.  begin
  49.   j:=1;
  50.   while(j<=n)and(k=0) do
  51.    begin
  52.     p:=1;
  53.     while(p<=n)and(k=0) do
  54.      begin
  55.       q:=1;
  56.       while(q<=n)and(k=0) do
  57.       if (p<>i)and(q<>j)and(a[i,j]=a[p,q])then k:=1
  58.       else inc(q);
  59.       if k=0 then inc(p);
  60.      end;
  61.     if k=0 then inc(j);
  62.    end;
  63.   if k=0 then inc(i);
  64.  end;
  65. if k=1 then
  66.  begin
  67.   writeln('В матрице С есть одинаковые числа');
  68.   s:=0;
  69.   for i:=1 to n do
  70.   s:=s+a[i,i];
  71.   write('Ее след=',s);
  72.  end
  73. else
  74.  begin
  75.   writeln('В матрице С нет одинаковых чисел');
  76.   s:=0;
  77.   for i:=1 to n do
  78.   s:=s+a[i,n-i+1];
  79.   write('Сумма элементов побочной диагонали=',s);
  80.  end;
  81. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы