Удалить дубликаты элементов из массива
Суть задания в том, что необходимо удалить серии повторяющихся элементов в массиве, оставив один элемент из серии. Я тут написал кой-чего, однако оно не работает должным образом. Возможно, вся проблема в [i + 1], но я без понятия как можно сделать по другому. Буду благодарен за любую помощь
int main() {
setlocale(0, "");
srand(time(0));
const int size = 10;
int count = 0;
int arr[size] = { 1,2,2,2,3,4,4,5,5,5 };
cout << "Исходный массив: ";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
if (arr[i] != arr[i + 1]) {
count++;
}
}
cout << "\nМассив без серий одинаковых подряд идущих элементов: ";
int* arr2 = new int[count];
for (int i = 0; i < size; i++) {
if (arr[i] != arr[i + 1]) {
arr2[i] = arr[i];
}
}
cout << endl;
for (int i = 0; i < count; i++) {
cout << arr2[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Забавно - вот буквально 10 минут, как писал такое :)
Но там хоть C - а вам с C++ кто мешает использовать unique? Ну, нет так нет...
const int size = 10;
int a[size] = { 1,2,2,2,3,4,4,5,5,5 };
int j = 0, r = 0;
while(++j < size)
if (a[r] != a[j] && ++r != j)
a[r] = a[j];
// В r - количество разных элементов
for(int i = 0; i <= r; ++i) cout << a[i] << " "; cout << "\n";