动态数组中的素数

时间:2015-04-23 14:34:52

标签: c++ arrays function dynamic iostream

我有一个程序,它将所有素数插入到数组中的特定数字。 计算是正确的。我的问题是函数参数和动态数组到函数的转移。我的功能不会修改我的数组。

请看一下代码:

#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;
}

祝你好运

1 个答案:

答案 0 :(得分:1)

在此功能中:

int primarrayspeicherung (int *primarray,int *bis)

primarray是一个局部变量。你正在做的所有事情(例如分配,分配)只影响本地 primarray,而不影响你传入的那个。如果你想要修改它们,你需要传入一个参考:

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