1

テーブルに少し問題があります。

    int najmniejszy_dzielnik(int m){
                cout<<"Array["<<m<<"] = "<<Array[m]<<endl;
                return Array[m];
    }

    int* czynniki_pierwsze(int m){
            int temp, size, i, helper;
            for(temp=m, i=1; 1 < temp; i++){
                helper=najmniejszy_dzielnik(temp);
                cout<<"test1, array[5] = "<<Array[5]<<endl;

                Array2[i]=helper; //------------------------------problem here
                cout<<"test2, array[5] = "<<Array[5]<<endl;

                temp/=helper;
                cout<<"test3, array[5] = "<<Array[5]<<endl;

                }
                Array2[0]=i;
                return Array2;
    }

このコードは私に間違った結果を与えていたので、私はcout "test1"、 "test2"、および "test3"を作成しました、そして私はこれを見つけました:

Array[225] = 3
test1, array[5] = 5
test2, array[5] = 5
test3, array[5] = 5
Array[75] = 3
test1, array[5] = 5
test2, array[5] = 3
test3, array[5] = 3

の値を変更すると、Array2[i]に影響しArray[ ]ます。

どうやってそうなった?

4

3 に答える 3

1

この影響の理由は、Array[]とArray2[]で同じスタックを使用していたためです。ポインタを使うべきだった。

于 2013-03-20T09:15:05.913 に答える
0

あなたが書いた:

    for(temp=m, i=1; 1 < temp; i++)

それは意味しました:

    for(temp=m, i=1; i < temp; i++)
于 2013-03-20T01:48:38.553 に答える
0

実際、コードには問題がないようです。こちらhttp://codepad.org/igdzwNnEを確認してください。関数の外部にある可能性があり、同時に「配列」を編集します

于 2013-03-20T02:30:58.810 に答える