Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2017, 22:13   #1
Soso229
Новичок
Джуниор
 
Регистрация: 17.11.2017
Сообщений: 2
По умолчанию Динамический массив

После удаления повторяющихся элементов из динамического массива,хочу его отсортировать,и вместо повторяющихся элементов выводится -842150451(столько сколько элементов было удалено), а дальше остальные элементы отсортировано,как решить эту проблему?

Последний раз редактировалось Soso229; 18.12.2017 в 22:18.
Soso229 вне форума Ответить с цитированием
Старый 18.12.2017, 22:25   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Удаляете-то как? Код покажите.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.12.2017, 13:21   #3
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Ну, я бы делал это как-то так.
Код:
// Создание
size_t size; size =500;
int* arr = new int[size];
// как-то заполнили где-то
fill_arr(arr, size);

// удаляем
for (size_t i = size; i>0; --i)
{
   const size_t index = i - 1;
   if (arr[index] == to_delete)
   {
      size--; // Уменшили размер массива
      /*
      for(size_t j = index; j<size; ++j)
      {
         arr[j] = arr[j+1]; // сдвигаем хвост вперёд
      }
      */
      memmove(arr + index, arr + index + 1; size - index); // Быстро сдвигаем хвост вперёд.
   }
}

// сортируем
std::sort(arr, arr + size);
// выводим:
for(int* v = arr; v!=arr+size; ++v)
{
   std::cout<<*v<<" ";
}
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 19.12.2017 в 13:31.
New man вне форума Ответить с цитированием
Старый 19.12.2017, 23:34   #4
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Код:
#include <iostream>
#include <map>

int main()
{
	const size_t COUNT = 19;
	
	int array[COUNT] = { -9, 2, 5, 6, -19, 3, 2, -1, -4, 5, 0, 3, 2, -4, -9, 7, -1, 21, 6 };
	
	std::map<int, int> mmap;
	for (auto n : array)
		mmap[n] += 1;

	auto it = mmap.begin();
	while (it != mmap.end())
	{
		if ((*it).second > 1)
			mmap.erase(it++);
		else
			++it;
	}

	for (auto it = mmap.begin(); it != mmap.end(); ++it)
		std::cout << it->first << "   ";

    system ("pause");
}
Мановар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамический массив. геннадий522 Общие вопросы C/C++ 3 12.03.2012 17:10
Динамический массив shadowstar Помощь студентам 1 29.02.2012 01:19
Динамический массив, массив указателей alexalisa Паскаль, Turbo Pascal, PascalABC.NET 4 22.04.2011 21:33
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22