配列から重複する要素を削除するアルゴリズムです。配列のサイズが5のときは動作しますが、要素を追加すると文字とreturnが返されます。例えば、この配列の出力は、 'PBMZOS'ではなく 'PBMZnnOS'です。アルゴリズム - 配列から重複する要素を削除する
int main()
{
char array[21]={'P','B','B','B','B','M','B','Z','P','P','Z','P','P','P','O','O','O','S','Z','P','M'};
char newarray[21];
newarray[0]=array[0];
int count = 1;
bool find = false;
int let = 0;
for(int i = 1; i < 21; i++,count++)
{
int j;
for(j = 0; j < count; j++)
{
if(array[i]!=array[j])
find = true;
else if(array[i]==array[j])
{
find = false;
break;
}
}
if(find)
{
newarray[i]=array[j];
let++;
}
}
for(int i = 0; i <= 21; i++)
printf("%c",newarray[i]);
printf("\n");
return 0;
}
が含ま配列をソートして、新しい配列に非連続的な要素をコピーします。 –
文字列から要素を削除した場合、その長さはもはや21になることはないため、印刷のループにはより良い制限が必要です。 –
また、配列インデックスについて考えてみましょう。 'newarray'にはいくつの要素がありますか? *有効*はいくつですか? –