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

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

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

Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <conio.h>
  4. #define n 2
  5. main()
  6. {
  7. int a[n][n],b[n][n],c[n][n]; int i, j, k;
  8. clrscr();
  9. printf("vvedite massiv A ");
  10. printf("\n");
  11. for(i=0; i<n; i++)
  12. for(j=0; j<n; j++)
  13. scanf("%d",&a[i][j]);
  14. printf("vvedite massiv B");
  15. printf("\n");
  16. for(i=0; i<n; i++)
  17. for(j=0; j<n; j++)
  18. scanf("%d",&b[i][j]);
  19. for (i=0;i<n; i++)
  20. for (j=0;j<n; j++)
  21. {c[i][j]=0;
  22. for (k=0; k<n;k++)
  23. c[i][j] = c[i][j] + (a[i][k] * b[k][j] - b[i][k] * a[k][j]);
  24. }
  25. printf("Rezyl'tat");
  26. printf("\n");
  27. for (i=0;i<n;i++);
  28. {
  29. for (j=0;j<n;j++);
  30. printf(" %d ",c[i][j]);
  31. printf("\n");
  32. }
  33. getch();
  34. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <malloc.h>
  5.  
  6. int** mult(int**mat1, int**mat2, int **rez, int N);
  7. int** diff(int**mat1, int**mat2, int N);
  8. int** input(int **mat, int N);
  9. void output(int **mat, int N);
  10.  
  11. int main(void)
  12. {
  13.     int **A,**B,**AB, **BA;
  14.     int N,i;
  15.     printf("Enter N -> ");
  16.     scanf("%d",&N);
  17.     A=(int**)malloc(N*sizeof(int*));
  18.     B=(int**)malloc(N*sizeof(int*));
  19.     AB=(int**)malloc(N*sizeof(int*));
  20.     BA=(int**)malloc(N*sizeof(int*));
  21.     for(i=0; i<N ; i++)
  22.      {
  23.          A[i]=(int*)malloc(N*sizeof(int));
  24.          B[i]=(int*)malloc(N*sizeof(int));
  25.          AB[i]=(int*)malloc(N*sizeof(int));
  26.          BA[i]=(int*)malloc(N*sizeof(int));
  27.      }
  28.     printf("Matrix A:\n");
  29.     input(A,N);
  30.     output(A,N);
  31.     printf("Matrix B:\n");
  32.     input(B,N);
  33.     output(B,N);
  34.     printf("Mult AxB:\n");
  35.     output(mult(A,B,AB,N),N);
  36.     printf("Mult BxA:\n");
  37.     output(mult(B,A,BA,N),N);
  38.     printf("Diff AB-BA:\n");
  39.     output(diff(AB,BA,N),N);
  40.     getch();
  41.     for(i=0; i<N; i++)
  42.     {
  43.         free(A[i]);
  44.         free(B[i]);
  45.         free(AB[i]);
  46.         free(BA[i]);
  47.     }
  48.      free(A);
  49.      free(A);
  50.      free(AB);
  51.      free(BA);
  52.     return 0;
  53. }
  54.  
  55. // input matrix
  56. int** input(int **mat, int N)
  57. {
  58.     int i,j;
  59.     for(i=0; i<N; i++)
  60.      {
  61.        for(j=0; j<N ; j++)
  62.         {
  63.             mat[i][j]=rand()%5+1;
  64.         }
  65.      }
  66.    return mat;
  67. }
  68.  
  69. // output matrix
  70.  
  71. void output(int **mat, int N)
  72. {
  73.     int i,j;
  74.      for(i=0; i<N ; i++)
  75.      {
  76.          for(j=0; j<N; j++)
  77.          {
  78.              printf("%d ",mat[i][j]);
  79.          }
  80.         printf("\n");
  81.      }
  82. }
  83.  
  84. // mult matrix
  85. int** mult(int **mat1, int **mat2, int **rez, int N)
  86. {
  87.     int i,j,k,S;
  88.      for(i=0; i<N; i++)
  89.      {
  90.          for(j=0; j<N; j++)
  91.          {
  92.              S=0;
  93.               for(k=0; k<N; k++)
  94.               {
  95.                   S+=mat1[i][k]*mat2[k][j];
  96.               }
  97.              rez[i][j]=S;
  98.          }
  99.      }
  100.     return rez;
  101. }
  102.  
  103. // diff matrix
  104.  
  105. int ** diff(int **mat1, int **mat2, int N)
  106. {
  107.     int i,j;
  108.      for(i=0; i<N; i++)
  109.      {
  110.          for(j=0; j<N; j++)
  111.          {
  112.              mat1[i][j]-=mat2[i][j];
  113.          }
  114.      }
  115.     return mat1;
  116. }

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


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

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

14   голосов , оценка 3.786 из 5

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

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

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