
06.11.2007, 19:04
|
|
Участник форума
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме: 3013539
Репутация:
441
|
|
вот небольшая поправка: запись результата в отдельный двумерный массив и последующий вывод результатов из него
Код:
#include<iostream>
using namespace std;
typedef int* pint;
void fillarray(pint array[], int m, int n);
pint* result(pint a[], pint b[], int m, int k ,int n);
void output(pint array[], int m, int n);
int main()
{
int m,n,k;
char exit;
cout<<"Input 1st array size: "<<endl<<"m: ";
cin>>m; cout<<"n: "; cin>>k;
cout<<"Input 2nd array size: "<<endl<<"m: "<<k<<endl<<"n: ";
cin>>n;
pint *p=new pint[m],*q=new pint[k], *res;
fillarray(p, m,k);
fillarray(q, k,n);
res=result(p,q,m,k,n);
output(res,m,n);
cout<<"Input any key to quit: ";
cin>>exit;
return 0;
}
void fillarray(pint array[], int m, int n)
{
for (int i=0;i<m;i++)
array[i]=new int[n];
cout<<"Input "<<m<<"x"<<n<<" array: "<<endl;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>array[i][j];
}
pint* result(pint a[], pint b[], int m, int k, int n)
{
int sum(0);
pint *temp = new pint[m];
for (int i=0;i<m;i++)
temp[i]=new int[n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
temp[i][j]=0;
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
{
sum=0;
for(int h=0; h<k ;h++)
{
sum=sum+a[i][h]*b[h][j];
}
temp[i][j]=sum;
}
return temp;
for (int i=0;i<k;i++)
delete a[i];
for (int i=0;i<n;i++)
delete b[i];
delete[] a, b;
}
void output(pint array[], int m, int n)
{
cout<<"Result "<<m<<"x"<<n<<" array:"<<endl;
for (int i=0;i<m;i++)
for (int j=0;j<n;j++)
{
cout<<array[i][j]<<" ";
if (j==n-1) cout<<endl;
}
for (int i=0;i<n;i++)
delete array[i];
delete[] array;
}
|
|
|