理論的には配列からすべての重複値を削除する必要がある関数が機能しないという問題があります。仕組みは次のとおりです。
- 2 つの配列があり、それらに 0 から 50 までの乱数を入力します。
- 並べ替え関数を使用して配列値を順番に並べ替えます
- 次に、重複除外機能を実行します
- 配列の値を順番に並べ替えます
- 次に、両方の配列の値を出力します
問題は、dedupe 関数のループが、検出された重複エントリの数に関係なく 19 回実行されることです。これは非常に奇妙です。また、それでも重複が発生します。
何か案は?ありがとう!
int* dedupe(int array[ARRAY_SIZE]) //remove duplicate array values and replace with new values.
{ bool dupe = false;
while(dupe!=true)
{
for(int j=0; j<ARRAY_SIZE; j++)
{ if(array[j] == array[j+1])
{ array[j] = rand();
array[j] = array[j] % 51;
dupe = false;
}
else { dupe = true; // the cout part is for debugging
cout << dupe << endl; }
}
} return array;
}
int main()
{
int a[9], b[9];
srand(time(0));
populate(b);
populate(a);
sort(a,ARRAY_SIZE);
sort(b,ARRAY_SIZE);
dedupe(a);
dedupe(b);
sort(a,ARRAY_SIZE);
sort(b,ARRAY_SIZE);
for(int i=0; i<10; i++)
{ cout << "a[" << i << "] = " << a[i] << "\t\t" << "b[" << i << "] = " << b[i] << endl; }
return 0;
}
これまでに提案されたものは何も問題を解決していません。誰かが解決策を知っていますか?