Функция: подсчёт произведения двух матриц - C (СИ)
Формулировка задачи:
Здравствуйте! Я сделал программу для подсчёта произведения двух матриц, но мне надо через функцию. Пожалуйста подскажите как сделать. Уже 10 дней изучаю материал, но до меня не доходит. Заранее большое спасибо...
#include <stdio.h>
#include <locale.h>
#include <conio.h>
int k,m,i,j,n,h,;
main ( )
{
setlocale(LC_ALL,"Rus");//устанавливает русский язык
printf ("\n Введите элемент k ", k);
scanf ("%d",&k);
printf ("\n Введите элемент m ", m);
scanf ("%d",&m);
printf ("\n Введите элемент n ", n);
scanf ("%d",&n);
int A[k] [m], B[m] [n], C[k][n]; // описание матрицы A и B
// ввод матрицы А
printf("\n Ввод матрицы А:");
for (i = 0; i < k; i++)
{
for (j = 0; j < m; j++)
{
printf("\n Введите элемент A [%d][%d]=", i, j);
scanf("%d", &A[i][j]);
}
}
// ввод матрицы В
printf("\n Ввод матрицы В:");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("\n Введите элемент B [%d][%d]=", i, j);
scanf("%d", &B[i][j]);
}
}
//вывод матрицы А
{
printf("\n Матрица A");
printf ("\n");
}
for (i=0; i<k; i++)
{
for (j=0; j<m; ++j)
printf(" %3d", A[i][j]);
printf("\n");
}
//вывод матрицы В
{
printf("\n Матрица В");
printf ("\n");
}
for (i=0; i<m; i++)
{
for (j=0; j<n; ++j)
printf(" %3d", B[i][j]);
printf("\n");
}
//вывод матрицы С(А*В)
printf("\n Произведение матрицы А и В:");
printf ("\n");
for(i = 0; i < k; i++){
for(j = 0; j < n; j++)
{
C[i][j] = 0;
for(h = 0; h < n; h++)
C[i][j] += A[i][h] * B[h][j];
printf("%5d", C[i][j]);
}
printf("\n");
}
getch(); //задержка окна консоли
return 0; //повтор программы не выполнять
}Решение задачи: «Функция: подсчёт произведения двух матриц»
textual
Листинг программы
void enter_arr(int *A, int k, int m)
{
int i, j;
printf("\n Ввод матрицы А:");
for (i = 0; i < k; i++) {
for (j = 0; j < m; j++) {
printf("\n Введите элемент A [%d][%d]=", i, j);
scanf("%d", &A[i][j]);
}
}
}
int main()
{
...
enter_arr(A, k, m); //вместо ввода для матрицы А
enter_arr(B, m, n); //вместо ввода для матрицы B
...
}
Объяснение кода листинга программы
- В функции
enter_arrпроисходит ввод элементов матрицыAс помощью функцииscanf. - В функции
mainвызывается функцияenter_arrдля ввода матрицыAиB. - После ввода матриц
AиBпроисходит подсчёт их произведения и вывод результата.