Получить произведение двух матриц - C (СИ)
Формулировка задачи:
Даны две матрицы. Получить их произведение
ф-ция перемножения
Даны две матрицы. Получить их произведение
#define ROW 4
#define COL 3
#define N 3
void mulmatr(int A[ROW][N], int B[N][COL], int C[ROW][COL])
{
for(int i = 0; i < ROW; i++)
for(int j = 0; j < COL; j++)
{
C[i][j] = 0;
for(int k = 0; k < N; k++)
C[i][j] += (A[i][k] * B[k][j]);
}
}Решение задачи: «Получить произведение двух матриц»
textual
Листинг программы
//Перемножение двух матриц циклами while
#define N1 3
#define N2 3
#define N3 3
int m[N1][N2];
int n[N1][N2];
int mn[N1][N3];
main ()
{ int i,j,k;
clrscr ();
for (i=0; i<N1; i++)
for (j=0; j<N2; j++)
scanf ("%d",&m[i][j]);
for (i=0; i<N2; i++)
for (j=0; j<N3; j++)
scanf("%d",&n[i][j]);
i=0;
while (i<N1)
{ j=0;
while (j<N3)
{mn[i][j]=0;
k=0;
while (k<N2)
{mn[i][j]+=m[i][k]*n[j][k]; k++; }
j++;}
i++; }
for (i=0; i<N1; i++)
{printf ("\n");
for (j=0; j<N3; j++)
printf ("%d ",mn[i][j]); }
getch ();
return 0;
}
Объяснение кода листинга программы
- Объявлены матрицы m и n размером N1xN2 и N2xN3 соответственно.
- В цикле заполняются значения матрицы m с помощью функции scanf.
- В цикле заполняются значения матрицы n с помощью функции scanf.
- Начинается цикл перемножения матриц с помощью циклов while.
- Внутренний цикл j выполняется N3 раза для каждого элемента матрицы mn.
- Внутренний цикл k выполняется N2 раза для каждого элемента матрицы mn.
- Элемент матрицы mn[i][j] инициализируется нулем.
- Внутренний цикл k выполняется N2 раза, умножая соответствующие элементы матриц m и n и добавляя результат к элементу матрицы mn.
- Внутренний цикл j увеличивается на единицу после каждой итерации внешнего цикла i.
- Внешний цикл i выполняется N1 раза, перемножая соответствующие элементы матриц m и n.
- Выводится результат умножения матриц с помощью функции printf.
- Программа завершается с помощью функции getch.
- Возвращается 0, указывая на успешное выполнение программы.