配列から重複した値を削除するプログラムを作成しています。最初に選択ソートソートメソッドを実行し、配列を変更してサイズを返す関数removedup()
を呼び出します。次に、基本的に配列の値をそのサイズまで印刷します。しかし、私はそれを実行すると、元の配列だけを印刷し、次に空白スペースを印刷します。誰がなぜこれが起こっているのか知っていますか?Cの配列から重複する整数を取り除く
マイコード:http://pastebin.com/uTTnnMHN
ちょうど重複コード:
int removedup(int a[])
{
int i, count, j;
count = n;
for (i = 0; i < (n - 1); i++) {
if (a[i] == a[i + 1]) {
for (j = 0; j < (n - i); j++) {
a[j] = a[j + 1];
}
count--;
i--;
}
}
return count;
}
個別にデバッグすることをおすすめします。出力ルーチンが動作することを確認してください。ソートルーチンが動作することを確認してください。 de-dupルーチンが動作することを確認してください。 (それは私には一番スケッチに見えます) – sarnold
GetIntegerルーチンをscanfで置き換えなければなりませんでしたが、一度やりましたが、ソートされた配列はうまく印刷されました。ただし、重複があった場合、removedupから戻ったことはありません。並べ替える前に配列を印刷するとどうなりますか? –
[アルゴリズム:配列から重複した整数を効率的に削除する方法](http://stackoverflow.com/questions/1532819/algorithm-efficient-way-to-remove-duplicate-integers-from-an-array) – Caleb