В настоящее время я изучаю программирование на языке С, чтобы лучше понять матрицы в C. Я пытался сделать эту программу. Кажется, у меня проблемы с выходом, так как вы видите, что программа имеет 3 функции. Первый позволяет вам вводить значения для массива, а затем отображать его. Вторая функция выполняет умножение, а последняя должна отображать вывод умноженной матрицы. Однако выход странный. Вот мой код. Вывод находится чуть ниже кода.Проблема с программированием и умножением матрицы умножения
#include <stdio.h>
void read_matrix(int m2[][3])
{
int i, j;
printf("input values for matrix in order of rows first \n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d",&m2[i][j]);
}
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", m2[i][j]);
}
printf("\n");
}
}
void multiply_matrices(int m1[][3], int m2[][3] ,int m3[][3])
{
int i, j, k;
for (i = 0; i < 3; i++){
for (j = 0; j < 3; j++){
for (k = 0; k < 3; k++){
m3[i][j] +=m1[i][k]*m2[k][j];
}
}
}
}
void write_matrix(int m3[][3])
{
int i, j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", m3[i][j]);
}
printf("\n");
}
}
int main(void)
{
int matrix1[3][3], matrix2[3][3], matrix3[3][3];
read_matrix(matrix1);
read_matrix(matrix2);
multiply_matrices(matrix1, matrix2, matrix3);
write_matrix(matrix3);
return 0;
}
и этот выход!
input values for matrix in order of rows first
1
2
3
2
2
2
1
2
2
1 2 3
2 2 2
1 2 2
input values for matrix in order of rows first
2
1
1
1
2
1
2
1
2
2 1 1
1 2 1
2 1 2
-858993450 -858993452 -858993451 /*This is the multiplied matrix output!*/
-858993450 -858993452 -858993452
-858993452 -858993453 -858993453
Press any key to continue . . .
Я боюсь, что это может быть просто глупая ошибка; если так мне жаль, но я не вижу, где я сейчас ошибаюсь.
Любая помощь была бы принята с благодарностью.
Doh !, Это плохо от меня, я забыл, что некоторое время назад я инициализировал массив и имел проблемы. Думаю, я добавлю возможность теперь выбирать размер матриц вместо 3x3. Спасибо! – InYourDreams