函数中两个矩阵的误差和通过使用二维数组

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