#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]。