Вычислить произведение двух матриц одна из которых вводится, а вторая задается формулой - C (СИ)

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

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

Дана квадратная матрица А порядка n. Получить матрицу АВ (I,j,…,n); элементы матрицы В вычисляются по формуле вот есть начало, но нет получения матрицы АВ помогите, заранее благодарю.
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #define n 3
  4. main ()
  5. { int A[n][n];
  6. float B[n][n],i,j,AB[n][n];
  7. clrscr();
  8. for(i=0;i<n;i++)
  9. {
  10. for(j=0;j<n;j++)
  11. scanf("%d",&A[i][j]);}
  12. for(i=0;i<n;i++)
  13. { for(j=0;j<n;j++)
  14. printf("%4d",A[i][j]);
  15. printf("\n"); }
  16. for (i=0;i<n;i++)
  17. {
  18. for (j=0;j<n;j++)
  19. { if (i<j) B[i][j]= 1/((i+1)+(j+1)-1);
  20. if (i==j)B[i][j]=0;
  21. if (i>j) B[i][j]= -1/((i+1)+(j+1)-1);
  22. }
  23. }
  24. for (i=0;i<n;i++)
  25. {
  26. printf("\n");
  27. for (j=0;j<n;j++)
  28. {
  29. AB[i][j] = A[j][i]*B[i][j];
  30. printf(" %.2f",AB[i][j]);
  31. }
  32. }
  33. getch();
  34. }

Решение задачи: «Вычислить произведение двух матриц одна из которых вводится, а вторая задается формулой»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5.     int irow, icol, n, k;
  6.     float sum;
  7.  
  8.     printf("Ââåäèòå ïîðÿäîê Г¬Г*òðèöû\n");
  9.     printf("n = "); scanf("%u", &n);
  10.  
  11.     float A[n][n], B[n][n], C[n][n];
  12.  
  13.     printf("Ââåäèòå ïåðâóþ Г¬Г*òðèöó: \n");
  14.     for(irow = 0; irow < n; irow++)
  15.         for(icol = 0; icol < n; icol++) {
  16.             printf("A[%d][%d] = ", irow, icol);
  17.             scanf("%f", &A[irow][icol]);
  18.         }
  19.  
  20.         for(irow = 0; irow < n; irow++)
  21.         for(icol = 0; icol < n; icol++) {
  22.             if (irow<icol)
  23.                 B[irow][icol]=1/(irow+icol-1);
  24.             else if(irow==icol)
  25.                 B[irow][icol]=0;
  26.             else B[irow][icol]=-(1/(irow+icol-1));
  27.         }
  28.  
  29.     for(irow = 0; irow < n; irow++)
  30.         for(icol = 0; icol < n; icol++) {
  31.             sum = 0;
  32.             for(k = 0; k < n; k++) {
  33.                 sum += A[irow][k] * B[k][icol];
  34.             }    
  35.             C[irow][icol] = sum;
  36.         }
  37.  
  38.     printf("\n");
  39.  
  40.     for(irow = 0; irow < n; irow++)
  41.         for(icol = 0; icol < n; icol++) {
  42.             if(icol == n - 1) printf("[%.1f]\n", C[irow][icol]);
  43.             else printf("[%.1f]", C[irow][icol]);
  44.         }
  45.  
  46.     printf("\n");
  47.  
  48.     return (0);
  49.  
  50. }

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

В этом коде выполняется умножение матрицы A на матрицу B, результат записывается в матрицу C.

  1. Объявляются переменные:
    • irow, icol, n, k — для хранения номеров строк, столбцов, размера матрицы и номера текущего элемента;
    • sum — для хранения промежуточного значения при вычислении произведения матриц;
    • A, B, C — для хранения матриц.
  2. Считывается размер матрицы n.
  3. Считываются значения элементов матрицы A.
  4. Заполняются элементы матрицы B по определенному правилу:
    • если irow < icol, то B[irow][icol] = 1/(irow+icol-1);
    • если irow == icol, то B[irow][icol] = 0;
    • в противном случае B[irow][icol] = -(1/(irow+icol-1)).
  5. Вычисляются произведения элементов матрицы A и B, и записываются в матрицу C.
  6. Выводятся значения элементов матрицы C.

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


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

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

12   голосов , оценка 3.667 из 5

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

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

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