Другие языки программирования и технологии

Удаление повторяющихся элементов из массива С++

Всем привет. Мне 16, 4 месяца изучаю С++. Задача:
Дан одномерный массив целых чисел. Необходимо удалить все повторяющиеся элементы из массива при этом НЕ используя решений из корбки языка! Т. е. чисто алгоритмически. Я решил эту задачку кое-как за 2 дня без гугла, но теперь хотелось бы посмотреть, как решают норм программисты. У меня решение вышло на 104 строки кода)
Пример:
arr = {4,1,8,4,2,8,9,3,3}
На выходе:
arr = {4,1,8,2,9,3}
Код, к сожалению, показать не могу, т. к. траблы с инетом. Пишу с телефона.
Ну и заранее всем спасибо!
Мой вариант из 32 строк за 10 минут.

#include <iostream>
using namespace std;
size_t remove_duplicates(int* box, const size_t n) {
const auto tmp = new int[n];
auto index = 0U;
tmp[index] = box[index];
for (auto i = ++index; i < n; ++i) tmp[i] = 0;
for (auto i = index; i < n; ++i) {
auto flag = true;
for (auto j = 0U; j < index; ++j)
if (tmp[j] == box[i]) {
flag = !flag;
break;
}
if (flag) tmp[index++] = box[i];
}
for (auto i = 0U; i < n; ++i) box[i] = tmp[i];
delete[] tmp;
return index;
}
void show(const int* box, const size_t n) {
for (auto i = 0U; i < n; ++i) cout << ' ' << box[i];
cout.put('\n');
}
int main() {
int box[] = { 4, 1, 8, 4, 2, 8, 9, 3, 3 };
auto n = size(box);
show(box, n);
n = remove_duplicates(box, n);
show(box, n);
system("pause");
}

P.S. Я забил на траблы в интернете :)
Сергей Путилин
Сергей Путилин
74 560
Лучший ответ
D@mir Тыkибаев Да 3е число инет отрубили ну.. Почему у всех такое мнение друг друге?
Типа оо сдул задание, какой из тебя программист (будущий)
Посмотрите первые комменты, там есть мое решение, хоть и очень корявое..
D@mir Тыkибаев Скажите пжлст, на сколько плохо мое решение?)
Мне нужно знать, к чему стремиться
У меня с инетом тоже траблы, поэтому вы можете посмотреть результат работы программы и размер ее всего 31 строка. А если хотите что бы у меня траблы с интернетом закончились, придется вам показать свое решение!
Антон Шабалин
Антон Шабалин
15 398
D@mir Тыkибаев Здесь все по порядку идет. В конце пример использования. Вот еще пример.
Пжлст, строго не судите, к критике я открыт, но только к объективной.
D@mir Тыkибаев И спасибо, что хоть ответили)
А то что-то никто не хочет помогать.. Лень наверн всем
D@mir Тыkибаев Спасибо Вам большое) Я проанализировал код и сделал для себя выводы.
Бывает, зациклюсь на одном, и все.. А оказалось все куда проще, чем я думал) Ваш код дополнил, массив динамический и размер правильный.
Как видите, я ввел доп. переменную count для подсчета изменений и условие на неравность нулю, чтобы не считать их изменения. Потом вынес в функцию и просто перезаписал в новый массив.

Похожие вопросы