Предмет: Информатика,
автор: Rank59
C++
В массив A длиной N из всех одинаковых элементов оставьте только по одному представителю.
Остальные удалите. Рассмотрите 2 варианта:
а) массив упорядочен
б) не упорядочен
Ответы
Автор ответа:
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();
#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();
Автор ответа:
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);
}
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);
}
Похожие вопросы
Предмет: Математика,
автор: kotik202031
Предмет: Геометрия,
автор: 000NoName
Предмет: Математика,
автор: veronikadanche
Предмет: Алгебра,
автор: aanbkaya
Предмет: Математика,
автор: madamsshsmsnv