类型'int&'的引用初始化无效,传递参数 1 时出错

Invalid initialization of reference of type 'int&' and error in passing argument 1

本文关键字:参数 出错 初始化 int 引用 类型 无效      更新时间:2023-10-16

我已经编写了一个C++问题的解决方案,它应该显示一个有序数组,其中包含来自矩阵的值。我已经做到了,但它一直显示两个错误,我不知道如何解决它们。

错误是:

第 84 行|错误:从类型"int*"的表达式初始化类型"int&"的引用无效|

第 57 行|错误:在传递 'void Inserare(int&, int*, int)' 的参数 1 |

#include <iostream>
#include <math.h>
using namespace std;
void CitireMatrice(int& n,int mat[100][100])
{
    int i,j,m;
    cout<<"Da n ";
    cin>>n;
    m=n;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        {
            cout<<"Matricea["<<i<<"]["<<j<<"]=";
            cin>>mat[i][j];
        }
}
void Tiparire(int n,int X[])
{   int i;
    if(n!=0)
    {
        for(i=1;i<=n;i++)
            cout<<X[i]<<" ";
        cout<<endl;
    }
    else
        cout<<"Sirul este vid";
}
int Prim(int n)
{
    int div=2;
    while(div<=sqrt(n) && n%div!=0)
    {
        if(div == 2)
            div = 3;
        else
            div = div + 2;
    }
    return div;
}
int SuperPrim(int n)
{
    while(n!=0)
    {
        if(Prim(n)==0)
            return 0;
        n=n/10;
    }
    return 1;
}
void Inserare(int& n,int X[],int v)
{   int i;
    int p=1; //prima pozitie
    while(X[p]>v && p<=n)
        p++;
    for(i=n;i>=p;i++)
        X[i+1]=X[i];
    X[p]=v;
    n++;
}
int Apartine(int X[],int n,int v)
{   int i;
    int gasit=0; //initializat cu 0 deoarece nu a gasit nimic inca
    for(i=1;i<=n;i++)
        if(X[i]==v)
            gasit=1;
    return gasit;
}
void Construire(int n,int mat[100][100],int X[],int& k)
{   int i,j;
    k=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if((i>j && i+j<n+1) || (i<j && i+j>n+1)) //daca apartine triunghiului drept SAU strang
               if(SuperPrim(mat[i][j])==1 && Apartine(X,k,mat[i][j])==0)
                    Inserare(X,k,mat[i][j]);
}

int main()
{
    int m,n,mat[100][100],X[100],k;
    CitireMatrice(n,mat);
    Construire(n,mat,X,k);
    Tiparire(n,X);
    return 0;
}
Inserare(X,k,mat[i][j]);

X 是表地址,根据声明 void Inserare(int& n,int X[],int v)您应该传递引用。也许您想在通话中切换 X 和 K?

你有函数 void Inserare(int& n,int X[],int v) ,你尝试调用Inserare(X,k,mat[i][j]);

您可能尝试以错误的顺序发送参数。 尝试在Inserare(k,X,mat[i][j]);上更改通话