Всем привет. Мне 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. Я забил на траблы в интернете :)
#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. Я забил на траблы в интернете :)
У меня с инетом тоже траблы, поэтому вы можете посмотреть результат работы программы и размер ее всего 31 строка. А если хотите что бы у меня траблы с интернетом закончились, придется вам показать свое решение!


D@mir Тыkибаев
Здесь все по порядку идет. В конце пример использования. Вот еще пример.
Пжлст, строго не судите, к критике я открыт, но только к объективной.
Пжлст, строго не судите, к критике я открыт, но только к объективной.

D@mir Тыkибаев
И спасибо, что хоть ответили)
А то что-то никто не хочет помогать.. Лень наверн всем
А то что-то никто не хочет помогать.. Лень наверн всем
D@mir Тыkибаев
Спасибо Вам большое) Я проанализировал код и сделал для себя выводы.
Бывает, зациклюсь на одном, и все.. А оказалось все куда проще, чем я думал) Ваш код дополнил, массив динамический и размер правильный.
Как видите, я ввел доп. переменную count для подсчета изменений и условие на неравность нулю, чтобы не считать их изменения. Потом вынес в функцию и просто перезаписал в новый массив.

Бывает, зациклюсь на одном, и все.. А оказалось все куда проще, чем я думал) Ваш код дополнил, массив динамический и размер правильный.
Как видите, я ввел доп. переменную count для подсчета изменений и условие на неравность нулю, чтобы не считать их изменения. Потом вынес в функцию и просто перезаписал в новый массив.


Похожие вопросы
- Помогите с С++. Надо найти произведение элементов одномерного массива между первым и последним 0.
- дан двумерный массив С(3,4).Получите новый массив А путём увеличения всех элементов исходного массива на число С.
- нужно создать на паскале программу которая будет находить повторяющиеся слова в массиве
- Подскажите оператор для удаления элемента из массива. Для С++
- Си. Как проверить, есть ли в одномерном массиве повторяющиеся элементы?
- №1.Как вычислить произведение элементов массива(1..5)В Паскале=)))№2.Найти наименьший элемент в массиве!Тоже в Паскале)
- задачка PAscal. найти сумму положительных элементов массива, расположенных до минимального элемента этого массива
- Как удалить нулевые элементы из массива C++. Помогите написать код для того чтобы из массива удалить все нулевые элементы
- алгоритм... по нахождению общих элементов двух массивов
- C#. Элементы одномерного массива размером 7, которые больше среднего значения элементов массива, заменить на 0.
Типа оо сдул задание, какой из тебя программист (будущий)
Посмотрите первые комменты, там есть мое решение, хоть и очень корявое..
Мне нужно знать, к чему стремиться