Умножение матриц работает некорректно - 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 */