用二维数组求函数中两个矩阵的误差和


#include <iostream>
using namespace std;
int add(int x[3][3], int y[3][3],int z[3][3]);
int main()
{
int x[3][3],y[3][3],z[3][3];
cout<<"Enter value for x "<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{

cout<<"Enter the value of index "<<i<<","<<j<<" :";
cin>>x[i][j];
}

}
cout<<"Enter value for y "<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{

cout<<"Enter the value of index "<<i<<","<<j<<" :";
cin>>y[i][j];
}

}

cout<<"Your result is :";   
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{

cout<<add(x[3][3],y[3][3]);
}
cout<<endl;

}
return 0;}
int add(int x[3][3], int y[3][3],int z[3][3])
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
z[i][j]=x[i][j]+y[i][j];
}
}
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cout<<z[i][j];
}
cout<<endl;
}
}

=================================================================================你看到的程序中,我想要添加2个矩阵通过使用二维数组,我也使用函数add(int x[3][3], int y[3][3],int z[3][3])。在这个程序中,当我试图编译它时,cout<<add(x[3][3],y[3][3])编译器会给我错误,说你在函数中存储了三个值,所以写了三个值,比如add(int x[3][3], int y[3][3],int z[3][3]),但我们知道,在这一点上,我们只写了两个整数,我想添加,在函数z[i][j]=x[i][j]+y[i][j]中声明。所以这个程序不能从我这里执行。这就是为什么我希望你在这个节目中做出纠正。

函数add返回类型为int,但不返回任何结果。

那么这个语句

cout<<add(x[3][3],y[3][3]);

没有意义,而且函数调用有无效参数(参数的数量及其类型)。

也许你的意思是

void add( const int x[3][3], const int y[3][3], int z[3][3]);

add( x, y, z );
cout<<"Your result is :";   
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cout<< z[i][j] << ' ';
}
cout<<endl;

}

这是您更新后的程序。

#include <iostream>
const size_t N = 3;
void add( const int x[N][N], const int y[N][N], int z[N][N] );
int main() 
{
int x[N][N], y[N][N], z[N][N];

std::cout << "Enter value for x " << 'n';

for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
std::cout << "Enter the value of index " << i << "," << j << " : ";
std::cin >> x[i][j];
}
}
std::cout << "Enter value for y " << 'n';

for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
std::cout << "Enter the value of index " << i << "," << j << " : ";
std::cin >> y[i][j];
}
}
add( x, y, z );

std::cout << "Your result is:n";

for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
std::cout << z[i][j] << ' ';
}
std::cout << 'n';
}

return 0;
}
void add( const int x[N][N], const int y[N][N], int z[N][N] )
{
for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
z[i][j] = x[i][j] + y[i][j];
}
}
}

所以你已经声明了三个参数,所以int到int转换是不可能的。首先定义如下函数

int add(int x[3][3], int y[3][3])
{
int z[3][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
z[i][j]=x[i][j]+y[i][j];
}
}
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cout<<z[i][j]<<"t";
}
cout<<endl;
}
}

在main函数中第二个输出结果的简单调用函数,如


cout<<"Your result is :"<<endl; 
add(x,y);

也从函数声明中删除Z[3][3]。

最新更新