Найти ошибку в задаче: Даны квадратные матрицы А и В порядка N. Получить матрицу АВ-ВА. - C (СИ)

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

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

#include <stdio.h>
#include <math.h>
#include <conio.h>
#define n 2
main()
 
{
int a[n][n],b[n][n],c[n][n]; int i, j, k;
clrscr();
  printf("vvedite massiv A ");
  printf("\n");
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&a[i][j]);
  printf("vvedite massiv B");
  printf("\n");
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&b[i][j]);
 
for (i=0;i<n; i++)
for (j=0;j<n; j++)
{c[i][j]=0;
for (k=0; k<n;k++)
c[i][j] = c[i][j] + (a[i][k] * b[k][j] - b[i][k] * a[k][j]);
}
printf("Rezyl'tat");
printf("\n");
for (i=0;i<n;i++);
{
for (j=0;j<n;j++);
printf(" %d  ",c[i][j]);
printf("\n");
}
getch();
}

Решение задачи: «Найти ошибку в задаче: Даны квадратные матрицы А и В порядка N. Получить матрицу АВ-ВА.»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
 
int** mult(int**mat1, int**mat2, int **rez, int N);
int** diff(int**mat1, int**mat2, int N);
int** input(int **mat, int N);
void output(int **mat, int N);
 
int main(void)
{
    int **A,**B,**AB, **BA;
    int N,i;
    printf("Enter N -> ");
    scanf("%d",&N);
    A=(int**)malloc(N*sizeof(int*));
    B=(int**)malloc(N*sizeof(int*));
    AB=(int**)malloc(N*sizeof(int*));
    BA=(int**)malloc(N*sizeof(int*));
    for(i=0; i<N ; i++)
     {
         A[i]=(int*)malloc(N*sizeof(int));
         B[i]=(int*)malloc(N*sizeof(int));
         AB[i]=(int*)malloc(N*sizeof(int));
         BA[i]=(int*)malloc(N*sizeof(int));
     }
    printf("Matrix A:\n");
    input(A,N);
    output(A,N);
    printf("Matrix B:\n");
    input(B,N);
    output(B,N);
    printf("Mult AxB:\n");
    output(mult(A,B,AB,N),N);
    printf("Mult BxA:\n");
    output(mult(B,A,BA,N),N);
    printf("Diff AB-BA:\n");
    output(diff(AB,BA,N),N);
    getch();
    for(i=0; i<N; i++)
    {
        free(A[i]);
        free(B[i]);
        free(AB[i]);
        free(BA[i]);
    }
     free(A);
     free(A);
     free(AB);
     free(BA);
    return 0;
}
 
// input matrix
int** input(int **mat, int N)
{
    int i,j;
    for(i=0; i<N; i++)
     {
       for(j=0; j<N ; j++)
        {
            mat[i][j]=rand()%5+1;
        }
     }
   return mat;
}
 
// output matrix
 
void output(int **mat, int N)
{
    int i,j;
     for(i=0; i<N ; i++)
     {
         for(j=0; j<N; j++)
         {
             printf("%d ",mat[i][j]);
         }
        printf("\n");
     }
}
 
// mult matrix
int** mult(int **mat1, int **mat2, int **rez, int N)
{
    int i,j,k,S;
     for(i=0; i<N; i++)
     {
         for(j=0; j<N; j++)
         {
             S=0;
              for(k=0; k<N; k++)
              {
                  S+=mat1[i][k]*mat2[k][j];
              }
             rez[i][j]=S;
         }
     }
    return rez;
}
 
// diff matrix
 
int ** diff(int **mat1, int **mat2, int N)
{
    int i,j;
     for(i=0; i<N; i++)
     {
         for(j=0; j<N; j++)
         {
             mat1[i][j]-=mat2[i][j];
         }
     }
    return mat1;
}

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


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

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

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