C++В массив A длиной N из всех схожих частей оставьте только

C++
В массив A длиной N из всех одинаковых частей оставьте только по одному представителю.
Другие удалите. Рассмотрите 2 варианта:
а) массив упорядочен
б) не упорядочен

Задать свой вопрос
1 ответ
//массив отсортировать, удалить повторные
include lt;iostreamgt;
include lt;listgt;
include lt;cstdlibgt;
 include lt;ctimegt;
 include lt;iomanipgt;
using namespace std;

  int main()   

    int j,n;
    listlt;intgt; lst;
    listlt;intgt;::iterator it1;
// исходная установка генератора случ. чисел
    srand(time(NULL));
//заполнение перечня 
    coutlt;lt;"n = ";  cingt;gt;n;
    for (j=0; jlt;n; j++)
      lst.push_back(rand() % 10);
//вывод на экран
      coutlt;lt;"initial array:  ";
      for (it1=lst.begin(); it1!=lst.end(); it1++)
      coutlt;lt;*it1lt;lt;" ";
//сортировка, удаление повторных
      lst.sort();
      lst.unique();
//вывод перечня
      coutlt;lt;endllt;lt;"after removing:  ";
      for (it1=lst.begin(); it1!=lst.end(); it1++)
      coutlt;lt;*it1lt;lt;" ";
      coutlt;lt;endl;

      system("pause");
      return 0;
   

В варианте без сортировки (что, вообще разговаривая, не принципно) убираете строку  lst.sort();   

Виолетта Севарева
К раскаянию, lst.unigue()  работает только для сортированного перечня, для не сортированного будет по другому         //удаление повторных без сортировки    it1=lst.begin();  j=*it1;  it2=it1;      for (it1=it2; it1!=lst.end(); it1++)          j=*it1;  it2=it1;  it2++;       while (it2!=lst.end())       if (*it2==j)  *it2=-1;   it2++;        lst.remove(-1);            
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт