Умножение матриц работает некорректно - C (СИ)
Формулировка задачи:
Что не так в этом коде? Вроде же все правильно. Суммируется нормально, а вот умножение...Бывает записывает огромные числа.
нужно пойду застрелюсь короче.
#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c,d; /* Основной интерфейс пользователя */ printf("Please, enter width of matrix #1\n"); scanf("%d",&a); printf("Please, enter height of matrix #1\n"); scanf("%d",&b); printf("Please, enter width of matrix #2\n"); scanf("%d",&c); printf("Please, enter height of matrix #2\n"); scanf("%d",&d); int matrix_one[a][b]; int matrix_two[c][d]; int i,j; /* Запись в двумерные массивы */ for(i = 0; i < a; i++){ printf("Enter line #%d\n",i+1); for(j = 0; j < b; j++){ scanf("%i",&matrix_one[i][j]); } } for(i = 0; i < c; i++){ printf("Enter line #%d\n",i+1); for(j = 0; j < d; j++){ scanf("%i",&matrix_two[i][j]); } } /* Вывод матриц на экран */ printf("\nThis is first matrix:\n"); for(i = 0; i < a; i++){ for(j = 0; j < b; j++){ printf("%3i",matrix_one[i][j]); } printf("\n"); } printf("\nThis is second matrix:\n"); for(i = 0; i < c; i++){ for(j = 0; j < d; j++){ printf("%3i",matrix_two[i][j]); } printf("\n"); } /* Умножение двух матриц */ int matrix_mul[a][d]; if (b==c){ printf("\nThis is product of 2 matrix:\n"); for(i = 0; i < a; i++){ for(j = 0; j < d; j++){ int m; matrix_mul[i][j] = 0; for(m = 0; m < b; m++);{ matrix_mul[i][j] += (matrix_one[i][m]*matrix_two[m][j]); //printf("\n %d", matrix_mul[i][j]); } } } for(i = 0; i < a; i++){ for(j = 0; j < d; j++){ printf("%3i",matrix_mul[i][j]); } printf("\n"); } }else{ printf("\nMmatrix can not be multiplied.\n"); } /* Сумма двух матриц */ if ((a==c) && (b==d)){ int matrix_sum[a][b]; printf("\nThis is sum of 2 matrix:\n"); for(i = 0; i < a; i++){ for(j = 0; j < b; j++){ matrix_sum[i][j] = matrix_one[i][j] + matrix_two[i][j]; printf("%3i",matrix_sum[i][j]); } printf("\n"); } }else{ printf("\nMatrix can not be summarized.\n"); } return 0; }
for(m = 0; m < b; m++);{
for(m = 0; m < b; m++){
Решение задачи: «Умножение матриц работает некорректно»
textual
Листинг программы
for(m = 0; m < d; m++);{ /* нужно d, а не b */
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д