|
Задача 3.
Условие задачи Алгоритм работы Листинг программы Набор тестов
Условие задачи
– представить в матричном виде. Написать программу для реализации этих преобразований.
(Произведением прямоугольной матрицы А размеров m*k на матрицу В размеров k*n называется
прямоугольная матрица С размеров m*n, каждый элемент которой вычисляется по формуле:
т.е. элемент произведения, расположенный в i-й строке, в j-м столбце равен сумме произведений
элементов i-й строки первого сомножителя на соответственные элементы j-го столбца второго сомножителя.
Обозначаем С = АВ. Произведение матриц определено, если число столбцов первого сомножителя равно числу строк второго)
Условие задачи Алгоритм работы Листинг программы Набор тестов
Алгоритм работы
Формируем две матрицы А и В.
Формируем транспонированные им матрицы ТА и ТВ.
Производим умножение матриц ТА и ТВ, формируется матрица ИТОГ.
Условие задачи Алгоритм работы Листинг программы Набор тестов
Листинг программы
-
#include
#include
#include
void formir(int i, int j, int str, int st, int mas[100][100]);
void vivod(int str, int st, int mas[100][100]);
void trans(int str, int st, int mas[100][100], int tmas[100][100]);
void main()
{
int na,nb,m,i,j,pr,p,a[100][100],ta[100][100],tb[100][100],b[100][100],itog[100][100];
cout<<"\n";
cout<<"Введите nа-число столбцов для матрицы А:" ;
cin>>na;
cout<<"Введите nb-число строк для матрицы В:" ;
cin>>nb;
cout<<"Введите m-число строк матрицы А, число столбцов матрицы В:" ;
cin>>m;
i=0;
j=0;
formir(i,j,m,na,a);
i=0;
j=0;
formir(i,j,nb,m,b);
cout<<"Матрица А:";
cout<<"\n";
vivod(m,na,a);
cout<<"Матрица В:";
cout<<"\n";
vivod(nb,m,b);
cout<<"Транспонированная матрица А:";
cout<<"\n";
trans(m,na,a,ta);
vivod(na,m,ta);
cout<<" Транспонированная матрица B:";
cout<<"\n";
trans(nb,m,b,tb);
vivod(m,nb,tb);
for(i=0; i<na; i++)
{
for(j=0; j<nb; j++)
{
pr=0;
for(p=0; p<m; p++)
{
pr=pr+ta[i][p]*tb[p][j];
}
itog[i][j]=pr;
}
}
cout<<"Итоговая матрица";
cout<<"\n";
vivod(na,nb,itog);
}
void formir(int i, int j, int str, int st, int mas[100][100])
{
for(i=0; i<str; i++)
{
for(j=0; j<st; j++)
{
mas[i][j]=random(51)-25;
}
}
}
void vivod(int str, int st, int mas[100][100])
{
int i;
int j;
for(i=0; i<str; i++)
{
for(j=0; j<st; j++)
{
cout.width(4); cout<<mas[i][j];
}
cout<<"\n";
}
}
void trans(int str, int st, int mas[100][100], int tmas[100][100])
{
int i;
int j;
for(i=0; i<str; i++)
{
for(j=0; j<st; j++)
{
tmas[j][i]=mas[i][j];
}
}
}
|
-
#include
#include
#include
void formir(int i, int j, int str, int st, int mas[100][100]);
void vivod(int str, int st, int mas[100][100]);
void trans(int str, int st, int mas[100][100], int tmas[100][100]);
void main()
{
int na,nb,m,i,j,pr,p,a[100][100],ta[100][100],tb[100][100],b[100][100],itog[100][100];
cout<<"\n";
cout<<"Введите nа-число столбцов для матрицы А:" ;
cin>>na;
cout<<"Введите nb-число строк для матрицы В:" ;
cin>>nb;
cout<<"Введите m-число строк матрицы А, число столбцов матрицы В:" ;
cin>>m;
i=0;
j=0;
formir(i,j,m,na,a);
i=0;
j=0;
formir(i,j,nb,m,b);
cout<<"Матрица А:";
cout<<"\n";
vivod(m,na,a);
cout<<"Матрица В:";
cout<<"\n";
vivod(nb,m,b);
cout<<"Транспонированная матрица А:";
cout<<"\n";
trans(m,na,a,ta);
vivod(na,m,ta);
cout<<" Транспонированная матрица B:";
cout<<"\n";
trans(nb,m,b,tb);
vivod(m,nb,tb);
for(i=0; i<na; i++)
{
for(j=0; j<nb; j++)
{
pr=0;
for(p=0; p<m; p++)
{
pr=pr+ta[i][p]*tb[p][j];
}
itog[i][j]=pr;
}
}
cout<<"Итоговая матрица";
cout<<"\n";
vivod(na,nb,itog);
}
void formir(int i, int j, int str, int st, int mas[100][100])
{
for(i=0; i<str; i++)
{
for(j=0; j<st; j++)
{
mas[i][j]=random(51)-25;
}
}
}
void vivod(int str, int st, int mas[100][100])
{
int i;
int j;
for(i=0; i<str; i++)
{
for(j=0; j<st; j++)
{
cout.width(4); cout<<mas[i][j];
}
cout<<"\n";
}
}
void trans(int str, int st, int mas[100][100], int tmas[100][100])
{
int i;
int j;
for(i=0; i<str; i++)
{
for(j=0; j<st; j++)
{
tmas[j][i]=mas[i][j];
}
}
}
|
Условие задачи Алгоритм работы Листинг программы Набор тестов
Набор тестов к программе
Автор решения: Груздева Илона
группа: 121Ми
год: 2008
Автор задачи: Гладков В.П. Курс лабораторных работ по программированию: Учебное пособие для специальностей электротехнического факультета ПГТУ/ Перм.гос.техн.ун-т. - Пермь, 1998. - 153с.
|