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

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

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

Дана квадратная матрица А порядка n. Получить матрицу АВ (I,j,…,n); элементы матрицы В вычисляются по формуле вот есть начало, но нет получения матрицы АВ помогите, заранее благодарю.
#include <stdio.h>
#include <math.h>
#define n 3
main ()
{ int A[n][n];
float B[n][n],i,j,AB[n][n];
clrscr();
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&A[i][j]);}
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
printf("%4d",A[i][j]);
printf("\n"); }
for (i=0;i<n;i++)
  {
  for (j=0;j<n;j++)
    { if (i<j) B[i][j]= 1/((i+1)+(j+1)-1);
      if (i==j)B[i][j]=0;
      if (i>j) B[i][j]= -1/((i+1)+(j+1)-1);
    }
  }
 
  for (i=0;i<n;i++)
  {
printf("\n");
  for (j=0;j<n;j++)
    {
   AB[i][j] = A[j][i]*B[i][j];
   printf(" %.2f",AB[i][j]);
    }
  }
 
getch();
}

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

textual
Листинг программы
#include <stdio.h>
 
int main() {
 
    int irow, icol, n, k;
    float sum;
 
    printf("Ââåäèòå ïîðÿäîê Г¬Г*òðèöû\n");
    printf("n = "); scanf("%u", &n);
 
    float A[n][n], B[n][n], C[n][n];
 
    printf("Ââåäèòå ïåðâóþ Г¬Г*òðèöó: \n");
    for(irow = 0; irow < n; irow++) 
        for(icol = 0; icol < n; icol++) { 
            printf("A[%d][%d] = ", irow, icol);
            scanf("%f", &A[irow][icol]);
        }
 
        for(irow = 0; irow < n; irow++)
        for(icol = 0; icol < n; icol++) {
            if (irow<icol)
                B[irow][icol]=1/(irow+icol-1);
            else if(irow==icol)
                B[irow][icol]=0;
            else B[irow][icol]=-(1/(irow+icol-1));
        }
 
    for(irow = 0; irow < n; irow++) 
        for(icol = 0; icol < n; icol++) {
            sum = 0;
            for(k = 0; k < n; k++) {
                sum += A[irow][k] * B[k][icol];
            }     
            C[irow][icol] = sum;
        }
 
    printf("\n");
 
    for(irow = 0; irow < n; irow++) 
        for(icol = 0; icol < n; icol++) {
            if(icol == n - 1) printf("[%.1f]\n", C[irow][icol]);
            else printf("[%.1f]", C[irow][icol]);
        }
 
    printf("\n");
 
    return (0);
 
}

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

В этом коде выполняется умножение матрицы 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
Похожие ответы