动态数组中的素数

Prime numbers in an dynamic array

我有一个程序可以将所有素数插入数组中的特定数字。 计算正确。我的问题是函数参数和我的动态数组到函数的传输。我的函数 不修改 我的数组。

请看代码:

#include <iostream>

using namespace std;

int primeinlesen(int *i);
int primarrayspeicherung (int *primarray,int *bis);

int main()
{
    int reload=1;
    while(reload==1)
    {
        int bis=0,*primarray,valcounter;
        primeinlesen(&bis);
        valcounter=primarrayspeicherung(primarray,&bis);
        for(int i=0;i<valcounter;i++)
        {
            cout<<i<<". Primzahl: "<<primarray[i]<<"\n";
        }
        delete [] primarray;
        cout<<"Anzahl Primzahlen: "<<valcounter<<endl;
        cout<<"Erneute Berechnung?(Ja(1) oder Nein(0))";
        cin>>reload;
    }
    return 0;
}

int primeinlesen(int *i)
{
    cout<<"Bis zu welchem Wert moechten SiePrimzahlen ausgegeben,haben(max.500)";
    cin>>*i;
    if(*i>500)
    {
        cout<<"Wert zu hoch...";

    }
    return 0;
}
int primarrayspeicherung (int *primarray,int *bis)
{
    int x,y,counter,e,valcounter=0,xcounter=0,xvalcounter=0,xx,xy,xe;
    for(x=2;x<*bis;x++)
    {
        counter=0;
        for(y=2;y<x;y++)
        {
            e=x%y;
            if(e==0)
            {
                counter++;
            }
        }
        if(counter==0)
        {
            valcounter++;
        }
    }
    //ZWEITER DURCHGANG
    primarray=new int[valcounter];
    for(xx=2;xx<*bis;xx++)
    {
        xcounter=0;
        for(xy=2;xy<xx;xy++)
        {
            xe=xx%xy;
            if(xe==0)
            {
                xcounter++;
            }
        }
        if(xcounter==0)
        {
            primarray[xvalcounter]=xx;
            xvalcounter++;
        }

    }
    return valcounter;
}

此致

在这个函数中:

int primarrayspeicherung (int *primarray,int *bis)

primarray 是局部变量。你对它所做的一切(例如分配,分配)只会影响 local primarray,而不是你传入的那个。如果你想修改两者,你需要传入参考:

int primarrayspeicherung (int*& primarray,int *bis)