Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 5
Регистрация: 20.12.2016
Сообщений: 157

Найти и вывести все числа, которые присутствуют в векторе более одного раза

20.06.2017, 01:47. Показов 2130. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
// 2) a = [32, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5]
// Найти и вывести все числа, которые присутствуют в списке более одного раза.

пытался вот как то так)
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
// 2) a = [32, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5]
// Найти и вывести все числа, которые присутствуют в списке более одного раза.
#include <iostream>
#include <string> 
#include <algorithm>
#include <vector>
 
using namespace std;
 
int main()
{
    
  vector<int>v = {32, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5};
  for (int i = 0; i < v.size(); i++)
  {
      
      if ( v[i] == v[i+1])
      {
      
        cout << v[i]<< endl;
      
      }
   }
}
подскажите что не так
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2017, 01:47
Ответы с готовыми решениями:

Вывести числа, которые встречаются более одного раза
Не могу понять одну задачку. Условие: Есть массив, заполненный случайными числами. Надо вывести числа, которые встречаются 2 и больше...

Выделить в другой массив все числа, которые встречаются более одного раза
Заполнить массив случайными числами и выделить в другой массив все числа, которые встречаются более одного раза.

Выделить в другой массив все числа, которые встречаются более одного раза в исходном
Всем привет.Помогите пожалуйста,очень надо,выручите,буду очень благодарен. Заполнить массив случайными числами и выделить в другой массив...

18
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.06.2017, 09:03
Возможны разные решения.
C++
1
2
3
4
std::map<int, unsigned> r;
 
for (int i : v) ++r[i];
for (auto i : r) if (i.second > 1) cout << i.first << endl;
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
20.06.2017, 09:07
C++
1
2
3
4
5
6
7
8
9
10
#include <algorithm> // std::count
#include <iostream>
#include <iterator> // std::begin, std::end
#include <vector>
 
int main() {
  using namespace std;
  vector<int> v = { 1, 3, 2, 3, 4 };
  cout << count(begin(v), end(v), 3) << endl;
}
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
20.06.2017, 09:09
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int>v = { 32, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5 };
    for (int i = 0; i < v.size()-1; i++)
        for (int j = i+1; j < v.size(); j++)
        if (v[i] == v[j])
            cout << v[j] << endl;
    system("pause");
    return 0;
}
1
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
20.06.2017, 09:12
Цитата Сообщение от Antikl Посмотреть сообщение
#include <iterator> // std::begin, std::end
?
Цитата Сообщение от Antikl Посмотреть сообщение
count(begin(v), end(v), 3)
?
Цитата Сообщение от swswsss Посмотреть сообщение
Найти и вывести все числа
?
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
20.06.2017, 09:15
Цитата Сообщение от Nemovok Посмотреть сообщение
Сообщение от Antikl
count(begin(v), end(v), 3)
?
Возвращает количество элементов в диапазоне
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
20.06.2017, 09:20
Цитата Сообщение от Antikl Посмотреть сообщение
Возвращает количество элементов в диапазоне
Я знаю что это.
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
20.06.2017, 09:23
Цитата Сообщение от Nemovok Посмотреть сообщение
?
да не нужно было объявлять библиотеку
C++
1
#include <iterator>
прывычка
0
Вирусоборец
208 / 154 / 69
Регистрация: 24.09.2013
Сообщений: 826
20.06.2017, 10:05
afront, Вот это решение! Все оказывается просто, а я не мог решить задачу.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2017, 10:14
Цитата Сообщение от Antikl Посмотреть сообщение
библиотеку
Это не библиотека, а заголовочный файл
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 10:16
Аркалык, задачу решает, но если элементов больше 2, будет выводить несколько раз одно и то же. Например,
C++
1
vector<int>v = { 32, -1, 0, 5, 2, 0, 33, 11, 5, 0, -2, 77, 5 };
Добавлено через 38 секунд
И чем map не нравится?
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2017, 10:17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <unordered_map>
#include <vector>
 
int main()
{
    const std::vector<int> v = {32, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5};
    std::unordered_map<int, size_t> um;
    for (const auto &x: v)
        ++um[x];
    for (const auto &p : um)
        if (p.second != 1)
            std::cout << p.first << " ";
}
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
20.06.2017, 10:26
Цитата Сообщение от мановар Посмотреть сообщение
если элементов больше 2, будет выводить несколько раз одно и то же
легко решается

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int>v = { 32, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5 ,5 };
    for (int i = 0; i < v.size()-1; i++)
        for (int j = i+1; j < v.size(); j++)
            if (v[i] == v[j])
            {
                cout << v[j] << endl;
                v.erase(v.begin() + j);
            }
    system("pause");
    return 0;
}
PP]
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
20.06.2017, 10:35
Лишние операции - лишние костыли. Да еще

C++
1
2
3
4
5
6
7
8
vector<int>v = { 32, -1, 5, 2, 0, 33, 5, 5, 11, 0, -2, 0, 77, 5 ,5 };
    for (int i = 0; i < v.size() - 1; i++)
        for (int j = i + 1; j < v.size(); j++)
            if (v[i] == v[j])
            {
                cout << v[j] << endl;
                v.erase(v.begin() + j);
            }
1
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
20.06.2017, 11:24
Еще один вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
 
using namespace std;
 
int main() {
    vector<int> v = { 32, -1, 5, 2, 0, 33, 5, 5, 11, 0, -2, 0, 77, 5 ,5 };
    set<int> x(v.begin(), v.end()), d;
    sort(v.begin(), v.end());
    set_difference(v.begin(), v.end(), x.begin(), x.end(), inserter(d, d.begin()));
    for(auto const& z: d)  cout << " " << z << endl;
    return 1;
}
Добавлено через 4 минуты
c map элегантнее, конечно
0
0 / 0 / 5
Регистрация: 20.12.2016
Сообщений: 157
20.06.2017, 16:02  [ТС]
Цитата Сообщение от afront Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int>v = { 32, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5 };
    for (int i = 0; i < v.size()-1; i++)
        for (int j = i+1; j < v.size(); j++)
        if (v[i] == v[j])
            cout << v[j] << endl;
    system("pause");
    return 0;
}
спасибо большое, не думал что тут нужно будет 2 цикла а будет достаточно только if (v[i] == v[i+1])
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
20.06.2017, 16:23
Цитата Сообщение от swswsss Посмотреть сообщение
будет достаточно только if (v[i] == v[i+1])
если массив предварительно отсортировать то достаточно
0
0 / 0 / 5
Регистрация: 20.12.2016
Сообщений: 157
21.06.2017, 01:09  [ТС]
Цитата Сообщение от afront Посмотреть сообщение
если массив предварительно отсортировать то достаточно
а не могли бы объяснить в двух словах почему? я понимаю что это нужно допустим для биенарный поиск, тут вроде сравниваются 2 числа, если условие не верно то идем дальше.
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
21.06.2017, 08:55
Цитата Сообщение от swswsss Посмотреть сообщение
тут вроде сравниваются 2 числа
вы тут сравниваете не просто 2 числа а 2 соседних числа v[i] == v[i+1] что в общем случае при поиске одинаковых чисел будет успешным как мне кажется только в отсортированном массиве
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2017, 08:55
Помогаю со студенческими работами здесь

Найти и напечатать числа, которые встречаются в массиве более одного раза
Одномерный массив А состоит из 30 элементов. Найти и напечатать числа, которые встречаются в массиве более одного раза.

Найти и распечатать числа, которые встречаются в массиве более одного раза
Одномерный массив А состоит из 30 элементов. Найти и распечатать числа, которые встречаются в массиве более одного раза. Помогите сделать

Найти и напечатать числа, которые встречаются в массиве более одного раза
Одномерный массив А состоит из 30 элементов. Найти и напечатать числа, которые встречаются в массиве более одного раза.

Найти все элементы массива, которые встречаются в нем не более одного раза
Нужна помощь. Задание такого : в двумерном массиве А найти все элементы, которые встречаются в нем не более одного раза и записать эти...

Найти минимальное число, встречающееся в заданном векторе более одного раза
Кто знает где можно прочитать может быть литературу или подобный пример посмотреть этой задачи Найти минимальное число, встречающееся в...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru