Найти ошибку в задаче: Даны квадратные матрицы А и В порядка 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д