Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Azu
0 / 0 / 0
Регистрация: 15.12.2011
Сообщений: 4
#1

Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза - C++

15.12.2011, 15:18. Просмотров 465. Ответов 7
Метки нет (Все метки)

Условие: есть неупорядоченный массив, нужно упорядочить его таки образом, чтобы вначале были элементы встречающиеся более одного раза.
например
дано: 1 2 3 2 1
получается: 11223
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 15:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза (C++):

Выбрать все элементы массива встречающиеся более одного раза - C++
В массиве из n элементов выбрать без повторений все элементы, встречающиеся более одного раза.

Вывести все элементы массива, встречающиеся более одного раза - C++
Дана целочисленная последовательность (одномерный массив целых чисел). Написать программу нахождения количества различных элементов этой...

Изменить матрицу так, чтобы в строках остались элементы, которые встречаются более одного раза, а другие заменить нулями - C++
Условие: Даны натуральные числа m, n (m, n <= 10) и целочисленную матрицу размера m x n. Изменить матрицу так, чтобы в строках остались...

Удалить из строки все символы встречающиеся более одного раза - C++
ввести символьную строку удалить из строки все символы встречающиеся более одного раза #include <string.h> #include <conio.h> ...

Удалить из файла все слова, встречающиеся более одного раза - C++
Найти в файле f все слова которые встречаются более одного раза выбросить их из файла f и получить новый файл q. Помогите пожалуйста.!!!

Одномерный массив: отсортировать так, чтобы вначале шли положительные элементы, а затем - отрицательные - C++
Помогите пожалуйста с задачей. Надо в одномерном массиве поменять элементы так, чтоб вначале шли положительные, затем нули , затем...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
15.12.2011, 16:07 #2
по возрастанию отсортируй пузырьком

Алгоритмы сортировок
Azu
0 / 0 / 0
Регистрация: 15.12.2011
Сообщений: 4
15.12.2011, 23:04  [ТС] #3
Цитата Сообщение от vet Посмотреть сообщение
по возрастанию отсортируй пузырьком
спасибо, что пытаешься помочь, но отсортировать по возрастанию будет не всегда верно, если например данным массивом будет например 12199.
mrak12
Сообщений: n/a
15.12.2011, 23:34 #4
Цитата Сообщение от Azu Посмотреть сообщение
спасибо, что пытаешься помочь, но отсортировать по возрастанию будет не всегда верно, если например данным массивом будет например 12199.
Так и получится 11299. Пузырек всегда робит
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.12.2011, 23:53 #5
Цитата Сообщение от mrak12 Посмотреть сообщение
Так и получится 11299. Пузырек всегда робит
Полагаю, что должно получиться не 11299, а 11992
Azu
0 / 0 / 0
Регистрация: 15.12.2011
Сообщений: 4
16.12.2011, 00:21  [ТС] #6
Цитата Сообщение от soon Посмотреть сообщение
Полагаю, что должно получиться не 11299, а 11992
Да, именно.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
16.12.2011, 01:55 #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Важно, как будут располагаться остальные элементы?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
#include <iterator>
#include <cstdlib>
#include <algorithm>
 
template <class T> void function(T begin, T end)
{
    for(T i = begin, pos = begin; i != end - 1; ++i)
        for(T j = i + 1; (j != end) && (pos != end); ++j)
            if(*i == *j)
            {
                std::swap(*pos++, *i);
                std::swap(*pos++, *j);
            }
}
 
int gen() { return rand() % 11; };
                
int main()
{
    srand(time(NULL));
    std::vector<int> vec(10);
    std::generate(vec.begin(), vec.end(), gen);
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    function(vec.begin(), vec.end());
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    return 0;
}
Azu
0 / 0 / 0
Регистрация: 15.12.2011
Сообщений: 4
16.12.2011, 05:58  [ТС] #8
Цитата Сообщение от soon Посмотреть сообщение
Важно, как будут располагаться остальные элементы?
Нет.
Спасибо за вариант.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2011, 05:58
Привет! Вот еще темы с ответами:

Сформировать массив,так чтобы элементы заштрихованной области были равны 1,а остальные 0 - C++
Сформировать массив,так чтобы элементы заштрихованной области были равны 1, а остальные 0.

Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке - C++
Доброго времени суток. Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке. Задача...

Преобразовать массив так, чтобы сначала располагались все элементы, отличающиеся от максимального не более 20% - C++
Задача звучит так: Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более...

Упорядочить массив так, чтобы элементы, которые равны 0, становились после всех остальных - C++
Задано массив целых чисел х1,х2, ...,хN.Упорядочить массив так, чтобы елементы которые равны 0 становились после всех остальных.Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.12.2011, 05:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru