Предмет: Информатика, автор: Rank59

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

Ответы

Автор ответа: srzontmp
0
//массив отсортировать, удалить повторные
#include <iostream>
#include <list>
#include <cstdlib>
 #include <ctime>
 #include <iomanip>
using namespace std;

  int main()  { 

    int j,n;
    list<int> lst;
    list<int>::iterator it1;
// начальная установка генератора случ. чисел
    srand(time(NULL));
//заполнение списка 
    cout<<"n = ";  cin>>n;
    for (j=0; j<n; j++)
      lst.push_back(rand() % 10);
//вывод на экран
      cout<<"initial array:  ";
      for (it1=lst.begin(); it1!=lst.end(); it1++)
      cout<<*it1<<" ";
//сортировка, удаление повторных
      lst.sort();
      lst.unique();
//вывод списка
      cout<<endl<<"after removing:  ";
      for (it1=lst.begin(); it1!=lst.end(); it1++)
      cout<<*it1<<" ";
      cout<<endl;

      system("pause");
      return 0;
  } 

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

Автор ответа: srzontmp
0
К сожалению, 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);
    }
        
Похожие вопросы
Предмет: Геометрия, автор: 000NoName
Предмет: Математика, автор: madamsshsmsnv