Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- int main() {
- int a, b;
- printf("Введите размер матрицы A(nxn):\n"); //scaning dimensions
- scanf("%d", &a);
- printf("Введите размер матрицы B(nxn):\n"); //scaning dimensions
- scanf("%d", &b);
- double** A; //initing matrixes
- double** B;
- A = (double**)malloc(a * sizeof(double*));
- B = (double**)malloc(b * sizeof(double*));
- for (int i = 0; i < a; ++i) {
- A[i] = (double*)malloc(a * sizeof(double));
- }
- for (int i = 0; i < b; ++i) {
- B[i] = (double*)malloc(b * sizeof(double));
- }
- while (a != b || a <= 0 || b <= 0) {
- printf("Для заданных размеров операция невозможна!\n");
- printf("Введите размер матрицы A(nxn) еще раз:\n"); //scaning dimensions
- scanf("%d", &a);
- printf("Введите размер матрицы B(nxn) еще раз:\n"); //scaning dimensions
- scanf("%d", &b);
- }
- printf("Введите матрицу A:\n"); //scaning matrix values
- for (int i = 0; i < a; ++i) {
- for (int j = 0; j < a; ++j) {
- scanf("%lf", &A[i][j]);
- }
- }
- printf("Введите матрицу B:\n"); //scaning matrix values
- for (int i = 0; i < b; ++i) {
- for (int j = 0; j < b; ++j) {
- scanf("%lf", &B[i][j]);
- }
- }
- double** C; //initing resulting matrix
- C = (double**)malloc(a * sizeof(double*));
- for (int i = 0; i < b; ++i) {
- C[i] = (double*)malloc(b * sizeof(double));
- }
- for (int i = 0; i < a; ++i){ //multiplying and summing A*B
- for (int j = 0; j < b; ++j) {
- C[i][j] = 0;
- for (int k = 0; k < a; ++k) {
- C[i][j] += A[i][k] * B[k][j];
- }
- }
- }
- for (int i = 0; i < b; ++i){ //multiplying and summing - B*A
- for (int j = 0; j < a; ++j) {
- for (int k = 0; k < b; ++k) {
- C[i][j] -= B[i][k] * A[k][j];
- }
- }
- }
- printf("\nПолучите ответ:\n"); //printing answer
- for (int i = 0; i < a; ++i) {
- for (int j = 0; j < a; ++j) {
- printf("%lf ", C[i][j]);
- }
- printf("\n");
- }
- for (int i = 0; i < a; ++i) { //deleting
- free(A[i]);
- free(B[i]);
- free(C[i]);
- }
- free(A);
- free(B);
- free(C);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement