1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| #include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i,j, // индекы элементов матрици а (строка,столбец соответственно)
i1,j1, // индекы элементов матрици b (строка,столбец соответственно)
n,m, // размерность матрицы а (строка,столбец соответственно)
k,l; // размерность матрицы b (строка,столбец соответственно)
const int N1=10,M1=10,Z1=100; // максимально домустимые размеры массивов (ЗАДАЮТСЯ КАК КОНСТАНТЫ)
int a[N1][M1],b[N1][M1],c[Z1]; // массивы
system("title произведение мариц"); // название программы в заголовке окна
system("echo введите количество строк и столбцов матрицы а");
scanf("%d%d",&n,&m); // присваивание значений размеров матрицы а, введенных с клавиатуры
system("echo введите количество строк и столбцов матрицы b");
scanf("%d%d",&k,&l); // присваивание значений размеров матрицы b, введенных с клавиатуры
if(n<1 || m<1 || k<1 || l<1) // проверка правильности введенных значений размеров матриц
{
system("echo количество строк и столбцов не может быть меньше хотябы одного элемента!!!");
system("echo."); // пустая строка.
system("pause"); // ожидание нажатия любой клавиши
exit(2); // выход из программы
}
if(m !=k) // проверка на возможность перемножения матриц
{
system("echo количество столбцов матрицы а должно быть равно количеству строк матрицы b");
system("echo.");
system("pause");
exit(2);
}
system("echo введите элементы матрицы а"); // формирование матрицы а
for(i=0;i<n;i++) //строки
for(j=0;j<m;j++) // столбцы
scanf("%d",&a[i][j]); // присвоение массиву элементов введенных с клавиатуры
system("echo введите элементы матрицы b"); // формирование матрицы b
for(i1=0;i1<k;i1++)
for(j1=0;j1<l;j1++)
scanf("%d",&b[i1][j1]);
system("cls"); // очистка экрана
system("echo исходные матрицы:");
system("echo.");
// контрольный вывод на экран сформированных матриц
system("echo матрица а:");
for(i=0;i<n;printf("\n"),i++)
for(j=0;j<m;j++)
printf("%4d",a[i][j]);
system("echo матрица b:");
for(i1=0;i1<k;printf("\n"),i1++)
for(j1=0;j1<l;j1++)
printf("%4d",b[i1][j1]);
int h=0,s=0; // переменная массива b, переменная суммы
for(i=0;i<n;i++)
for(j1=0;j1<l;j1++)
{
for(i1=0;i1<k;i1++)
{
int r=a[i][i1];
int e=b[i1][j1];
int s=s+r*e; // суммирование произведений элементов строки матрицы а на элементы столбца матрицы b
if(i1==k-1) // если строка матрицы а закончена,
{
c[h]=s; // то полученную сумму произведений присваиваем массиву с,
s=0; // переменную суммы сбрасываем на исходное значение
h++; // и увеличиваем индекс массива с на еденицу
}
}
}
system("echo матрица с:"); // вывод полученного одномерного массива в виде двумерного
for(h=0;h<l*n;h++) // здесь l*n означает максимальную длинну массива(размерность полученной матрицы) n строк на l столбцов
{
printf("%5d",c[h]); // вывод элементов массива на эеран
if(h%l==1) // если строка закончена
printf("\n"); // новая строка
}
getch();
} |