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

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


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

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

13   голосов , оценка 4.077 из 5
Похожие ответы