函数中两个矩阵的误差和通过使用二维数组
Error sum of two matrix in function By using 2d array
#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;
}
}
============================================= ====================================
你看到我想通过使用 2d 数组添加 2 矩阵的程序,我也使用 Function 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
return 什么都没有,尽管它的 return 类型是 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]。
#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;
}
}
============================================= ====================================
你看到我想通过使用 2d 数组添加 2 矩阵的程序,我也使用 Function 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
return 什么都没有,尽管它的 return 类型是 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]。