1个回答
展开全部
主要是采用二维数组的方法进行操作的,你可以较容易的改成指针的方法
#include <iostream>
using namespace std;
#define M 100
#define N 100
int main(void)
{
void input_matrix(double a[][N],int r,int c);
void print_matrix(double a[][N],int r,int c);
void transpose(double b[][M],double a[][N],int a_r,int a_c);
void array_mean_variance(double a[][N],double *menavalue,double *varvalue,int r,int c);
void Matrix_multiplication(double c[][N],double a[][N],double b[][N],int m,int k,int n);
int m,n;
double A[M][N]= {0};
double A_T[M][N]= {0};
double C[M][N]= {0};
double A_meanvalue;
double A_varvalue;
cout <<"the A's row:"<<endl;
cin>>m;
cout <<"the A's col:"<<endl;
cin>>n;
cout<<"please input "<<m*n<<" member of A:"<<endl;
input_matrix(A,m,n);
cout<<"the A is:"<<endl;
print_matrix(A,m,n);
cout<<"the transpose:"<<endl;
transpose(A_T,A,m,n);
print_matrix(A_T,n,m);
array_mean_variance(A,&A_meanvalue,&A_varvalue,m,n);
cout<<"the A's menavalue is "<<A_meanvalue<<endl;
cout<<"the A'varvalue is "<<A_varvalue<<endl;
Matrix_multiplication(C,A,A_T,m,n,m);
cout<<"the C is:"<<endl;
print_matrix(C,m,m);
return 0;
}
void print_matrix(double a[][N],int r,int c)
{
int i,j;
for(i = 0;i < r; i++)
{
for(j = 0;j < c;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
void input_matrix(double a[][N],int r,int c)
{
int i,j;
for(i = 0;i < r; i++)
for(j = 0;j < c;j++)
{
cin>>a[i][j];
}
}
void transpose(double b[][M],double a[][N],int a_r,int a_c)
{
int i,j;
for(i = 0;i < a_c; i++)
for(j = 0;j < a_r;j++)
{
b[i][j] = a[j][i];
}
}
void array_mean_variance(double a[][N],double *menavalue,double *varvalue,int r,int c)
{
int i,j;
double sum = 0;
for(i = 0;i <r;i++)
for(j = 0;j < c;j++)
{
sum+= a[i][j];
}
*menavalue = sum/(c*r);
sum = 0;
for(i = 0;i <r;i++)
for(j = 0;j < c;j++)
{
sum+= (a[i][j]- *menavalue)*(a[i][j]- *menavalue);
}
*varvalue = sum/(c*r);
}
void Matrix_multiplication(double c[][N],double a[][N],double b[][N],int m,int k,int n)
{
int i,j,in_k;
double sum = 0;
for(i = 0;i < m ;i++)
for(j = 0;j < n;j++)
{
sum = 0;
for(in_k = 0;in_k <k;in_k++)
{
sum += a[i][in_k]*b[in_k][j];
}
c[i][j]= sum;
}
}
#include <iostream>
using namespace std;
#define M 100
#define N 100
int main(void)
{
void input_matrix(double a[][N],int r,int c);
void print_matrix(double a[][N],int r,int c);
void transpose(double b[][M],double a[][N],int a_r,int a_c);
void array_mean_variance(double a[][N],double *menavalue,double *varvalue,int r,int c);
void Matrix_multiplication(double c[][N],double a[][N],double b[][N],int m,int k,int n);
int m,n;
double A[M][N]= {0};
double A_T[M][N]= {0};
double C[M][N]= {0};
double A_meanvalue;
double A_varvalue;
cout <<"the A's row:"<<endl;
cin>>m;
cout <<"the A's col:"<<endl;
cin>>n;
cout<<"please input "<<m*n<<" member of A:"<<endl;
input_matrix(A,m,n);
cout<<"the A is:"<<endl;
print_matrix(A,m,n);
cout<<"the transpose:"<<endl;
transpose(A_T,A,m,n);
print_matrix(A_T,n,m);
array_mean_variance(A,&A_meanvalue,&A_varvalue,m,n);
cout<<"the A's menavalue is "<<A_meanvalue<<endl;
cout<<"the A'varvalue is "<<A_varvalue<<endl;
Matrix_multiplication(C,A,A_T,m,n,m);
cout<<"the C is:"<<endl;
print_matrix(C,m,m);
return 0;
}
void print_matrix(double a[][N],int r,int c)
{
int i,j;
for(i = 0;i < r; i++)
{
for(j = 0;j < c;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
void input_matrix(double a[][N],int r,int c)
{
int i,j;
for(i = 0;i < r; i++)
for(j = 0;j < c;j++)
{
cin>>a[i][j];
}
}
void transpose(double b[][M],double a[][N],int a_r,int a_c)
{
int i,j;
for(i = 0;i < a_c; i++)
for(j = 0;j < a_r;j++)
{
b[i][j] = a[j][i];
}
}
void array_mean_variance(double a[][N],double *menavalue,double *varvalue,int r,int c)
{
int i,j;
double sum = 0;
for(i = 0;i <r;i++)
for(j = 0;j < c;j++)
{
sum+= a[i][j];
}
*menavalue = sum/(c*r);
sum = 0;
for(i = 0;i <r;i++)
for(j = 0;j < c;j++)
{
sum+= (a[i][j]- *menavalue)*(a[i][j]- *menavalue);
}
*varvalue = sum/(c*r);
}
void Matrix_multiplication(double c[][N],double a[][N],double b[][N],int m,int k,int n)
{
int i,j,in_k;
double sum = 0;
for(i = 0;i < m ;i++)
for(j = 0;j < n;j++)
{
sum = 0;
for(in_k = 0;in_k <k;in_k++)
{
sum += a[i][in_k]*b[in_k][j];
}
c[i][j]= sum;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询