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();
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);
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов