Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
1 / 1 / 0
Регистрация: 05.08.2017
Сообщений: 15

Вывести те элементы, которые встречаются в массиве только один раз

05.08.2017, 13:12. Показов 43078. Ответов 199
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Изучаю c++, ломаю уже 1 день голову над данной задачей:
Дан массив. Выведите те его элементы, которые встречаются в массиве только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке.

Сделал идею такую: если элемент встречается 1 раз - то вывести его. НО, почему то, выводятся все элементы, день ломаю голову, не могу найти ошибку...

код:
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
#include <iostream>
#include <vector>
using namespace std;
int main () {
    int n, numMin = 0, p = 0;
    cin >> n;
    vector <int> num(n);
    for (int i = 0; i < n; i++)
        cin >> num[i];
    for (int i = 0; i < n; i++) {
        int rav = 0;
        for (int i = p; i < n; i++) {
            if (num[numMin] == num[i]) {
                rav++;
            }
        }
        if (rav == 1) {
            cout << num[numMin] << " ";
        }
        numMin++;
        p++;
    }
return 0;
}
Добавлено через 36 минут
На вход получаю:
5
1 3 3 3 2
На выход получаю:
1 3 2 (вместо 1 2)
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.08.2017, 13:12
Ответы с готовыми решениями:

Вывести числа, которые встречаются в массиве несколько раз / один раз
дан массив состоящий из 100 целых чисел. а)Вывести все числа,которие встречаются в етом массиве несколько раз б)Вывести все...

Элементы массива, которые встречаются только один раз
Нужно создать функцию, которая выводит на экран номера элементов, встречающихся в массиве только один раз не знаю как это реализовать...

Удалить нечётные элементы, которые встречаются в массиве один раз
удалить нечетные элементы, которые встречаются в массиве только один раз c++

199
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6693 / 3082 / 1064
Регистрация: 01.06.2021
Сообщений: 11,900
16.06.2026, 18:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Алексей1153 Посмотреть сообщение
я и сам умею измерять
там можно переключать разные компиляторы и видеть результаты сравнений на разных компиляторах
0
фрилансер
 Аватар для Алексей1153
6510 / 5769 / 1135
Регистрация: 11.10.2019
Сообщений: 15,409
17.06.2026, 07:19
Royal_X, работают ухи
https://onlinegdb.com/O-z4ib3-La
C++
1
2
3
4
int main()
{
    constexpr auto i = ^^int;
}
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6693 / 3082 / 1064
Регистрация: 01.06.2021
Сообщений: 11,900
17.06.2026, 08:03
Алексей1153, мой первый код с ним

https://onlinegdb.com/VSNPlRbwT

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <meta>
#include <print>
 
int main()
{
    int meow{42};
    constexpr auto r_meow = ^^meow;
    constexpr auto name = std::meta::identifier_of(r_meow);
    constexpr auto r_type = std::meta::type_of(r_meow);
    constexpr auto type_name = std::meta::display_string_of(r_type);
    std::println("name={}, type={}, value={}", name, type_name, [:r_meow:]);
}
Добавлено через 6 минут
Алексей1153, но <linalg> ещё не добавили в GCC. Жду, когда заработает BLAS.
0
фрилансер
 Аватар для Алексей1153
6510 / 5769 / 1135
Регистрация: 11.10.2019
Сообщений: 15,409
17.06.2026, 08:05
Цитата Сообщение от Royal_X Посмотреть сообщение
мой первый код с ним
и сразу во все тяжкие
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6693 / 3082 / 1064
Регистрация: 01.06.2021
Сообщений: 11,900
17.06.2026, 10:05
Алексей1153, кстати, чтобы локально компилировать код с рефлексией на GCC 16.1, то -std=c++26 недостаточно. Нужно еще передать -lstdc++exp и -freflection.

Еще заметил, что начиная с GCC 16, дефолтной версией стала -std=c++20

Цитата Сообщение от vlisp Посмотреть сообщение
...
не любишь ты новые фичи))
0
фрилансер
 Аватар для Алексей1153
6510 / 5769 / 1135
Регистрация: 11.10.2019
Сообщений: 15,409
17.06.2026, 11:10
Royal_X, ну, там компилятор подсказывает. Я флаг подставил

Добавлено через 1 минуту
vlisp, всего лишь в язык дотащили то, что должно было быть лет 30 назад
0
 Аватар для vlisp
1121 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,448
17.06.2026, 11:26
Цитата Сообщение от Royal_X Посмотреть сообщение
не любишь ты новые фичи))
я люблю новые фичи, но лишь те, которые полезны. копаться в собственных кишках - это ошибка
Как-то давно смотрел ролик про 5 уровней ошибок в программировании (очень жаль сейчас не могу найти его)
Так вот это вот уровень 4 или 5, то есть все очень плохо.
вместо того, чтоб создать вменяемую объектную модель, все занимаются графоманией и выдумыванием бесполезного мусора

Добавлено через 2 минуты
Цитата Сообщение от Алексей1153 Посмотреть сообщение
в язык дотащили то, что должно было быть лет 30 назад
должно ли? что полезного в этом?
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6693 / 3082 / 1064
Регистрация: 01.06.2021
Сообщений: 11,900
17.06.2026, 11:37
Цитата Сообщение от vlisp Посмотреть сообщение
что полезного в этом?
- позволяет перейти от сложных шаблонных извращений и макросов к современному метапрограммированию, основанному на самой структуре языка. Наконец-то можно писать generic-код, который знает о структуре типов, без макросов, без сторонних библиотек с хаками и без потери производительности от слова совсем. Сериализация / десериализация структур теперь будет намного удобнее. То же самое, касается парсинга.

- еще стоит отметить, что С++26 представила статическую (compile-time) рефлексию, которая не добавляет никаких накладных расходов на этапе выполнения. Таким образом, абстракция и производительность не взаимоисключают друг друга в современном C++. Та рефлексия, что есть в других языках (как вот в Java или Python), влияет на производительность, а в С++ такого не будет.

Цитата Сообщение от vlisp Посмотреть сообщение
должно ли?
как новые фичи могут кому-то мешать? не нравится - не используй и пиши дальше код в стиле С, используя лишь 5% возможностей С++
1
 Аватар для vlisp
1121 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,448
17.06.2026, 11:43
Цитата Сообщение от Royal_X Посмотреть сообщение
как вот в Java или Python
ни жаба ни питон не компиляется...
Цитата Сообщение от Royal_X Посмотреть сообщение
без потери производительност
пишите вменяемый код и компиляться будет без потери производительности
0
Заблокирован
17.06.2026, 12:26
Royal_X, та ладно, раз человеку хватает эти самые 5%, пусть себе выдумывает "вменяемый код".
Кто пишет что то большее чем калькуляторы/редакторы, знают что и для чего нужно.
0
фрилансер
 Аватар для Алексей1153
6510 / 5769 / 1135
Регистрация: 11.10.2019
Сообщений: 15,409
17.06.2026, 12:53
Цитата Сообщение от vlisp Посмотреть сообщение
что полезного в этом
теперь возможно делать очень просто то, что раньше делалось костылями и тратой времени + ошибками
0
 Аватар для vlisp
1121 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,448
17.06.2026, 13:18
Цитата Сообщение от Алексей1153 Посмотреть сообщение
теперь возможно делать очень просто то, что раньше делалось костылями и тратой времени + ошибками
а может ошибка в том, что вы это делали, вместо того, чтоб писать вменяемо и не страдать этой ерундой?
0
фрилансер
 Аватар для Алексей1153
6510 / 5769 / 1135
Регистрация: 11.10.2019
Сообщений: 15,409
17.06.2026, 13:20
vlisp, конечно же нет
0
 Аватар для vlisp
1121 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,448
17.06.2026, 13:59
Цитата Сообщение от Алексей1153 Посмотреть сообщение
конечно же нет
вот кстати код на лиспе для этой задачи
Lisp
1
((setq f(lambda(lst)(cond((null(cdr lst))lst)((member (car lst)(cdr lst))(f(vl-remove(car lst)lst)))(T(cons(car lst)(f(cdr lst)))))))'(1 2 3 5 3 4 2 1))
попробуй использовать всю свою рефлексию, чтобы код был короче
напиши получение обратной матрицы короче, чем на лисп?
если справишься, я тебе поверю
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6693 / 3082 / 1064
Регистрация: 01.06.2021
Сообщений: 11,900
17.06.2026, 14:24
vlisp, тема про рефлексию вообще не связана с задачей ТС. Алексей1153 в посте Вывести те элементы, которые встречаются в массиве только один раз привел пример с рефлексией лишь чтобы показать, что на сайте onlinegdb уже заработал GCC 16.1. А сделал он это потому, что до этого шло обсуждение о необходимости обновления компилятора на этом сайте и Алексей1153 написал им письмо с просьбой, чтобы они это сделали.

Цитата Сообщение от vlisp Посмотреть сообщение
чтобы код был короче
напиши получение обратной матрицы короче, чем на лисп?
чем короче нужен код, тем более высокоуровневый язык нужно брать. Все равно, найдется язык, который порвет лисп в этом плане.

Например, Mathematica
Code
1
l={1,2,3,2,4,1,5};Select[l,Count[l,#]==1 &]
или Maple
Code
1
L:=[1,2,3,2,4,1,5];select(x->numboccur(L, x)=1,L);
то же самое касается обратной матрицы.

С другой стороны, производительность на таких сверхвысокоуровневых языках будет ниже, чем на С++
0
 Аватар для Наталья8
639 / 397 / 68
Регистрация: 09.03.2016
Сообщений: 4,365
17.06.2026, 14:54
Цитата Сообщение от Алексей1153 Посмотреть сообщение
теперь возможно делать очень просто
Это путь в никуда... Следующий этап искуственный интелект и ты никому не нужен.
В си можно отточить каждую итерацию. Имеешь доступ.
Но что бы сделать идеально, надо пару дней подумать.
Вот это мне и доставляет моральное удовлетворение.
Цели разные. У меня нет цели надолбать по быстрому.

Добавлено через 6 минут

Здесь ошибочка. Ищет по массиву волшебные числа. (-12345)
Надо бы запретить. Вот у меня в башке и вертиться. Будто что то не доделал.
Хотя кому оно надо. Никто читать то не станет.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int *ptr = bas_mass, *ptr_n = bas_mass;
CMP_N:
    while (1) {
        ++ptr;
 
 
 if ( *ptr == -12345) break;// Как то так. И проверить бы на ide.
 
 
 
    if ( memcmp(ptr_n, ptr, sizeof(int)) == 0) {
        *ptr = -12345; break;
        }
else if (ptr - bas_mass >= n_count-1) {
        if(*ptr_n != -12345)printf("--- %d\n", *ptr_n); break; }
        }
    ++ptr_n;
if ((ptr_n - bas_mass) < n_count) { ptr = ptr_n;
 goto CMP_N; }
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6693 / 3082 / 1064
Регистрация: 01.06.2021
Сообщений: 11,900
17.06.2026, 15:01
Цитата Сообщение от Наталья8 Посмотреть сообщение
Но что бы сделать идеально, надо пару дней подумать.
видимо, ты не думал пару дней

Цитата Сообщение от Наталья8 Посмотреть сообщение
У меня нет цели надолбать по быстрому.
лучше делать медленно и O(n²) ?

Подсказка: использование голых указателей и их арифметики, goto и прочего не означает, что ты написал быстрый код
0
фрилансер
 Аватар для Алексей1153
6510 / 5769 / 1135
Регистрация: 11.10.2019
Сообщений: 15,409
17.06.2026, 15:15
vlisp, рефлексия не для этого.

Как минимум - при логгировании/сериализации доставать нужные текстовые имена переменных и перечислений

Добавлено через 1 минуту
Цитата Сообщение от Наталья8 Посмотреть сообщение
Это путь в никуда... Следующий этап искуственный интелект и ты никому не нужен.
В си можно отточить каждую итерацию. Имеешь доступ.
Но что бы сделать идеально, надо пару дней подумать.
Вот это мне и доставляет моральное удовлетворение.
Цели разные. У меня нет цели надолбать по быстрому.
странные фантазии
0
 Аватар для Наталья8
639 / 397 / 68
Регистрация: 09.03.2016
Сообщений: 4,365
17.06.2026, 15:20
Идёт по массиву, каждое число заходит в цикл while,
ищет совпадения только после позиции числа.
По нахождению совпадения, ставит вместо него волшебное число и вылетает из цикла на след. позицию.
Найдя волшебное число, вылетает сразу на следующую позицию.
Здесь не в goto дело. Я пару дней подумал.

Добавлено через 1 минуту
Цитата Сообщение от Алексей1153 Посмотреть сообщение
странные фантазии
У каждого свои...
Тараканы.

Добавлено через 4 минуты
Цитата Сообщение от Royal_X Посмотреть сообщение
не означает, что ты написал быстрый код
Исходя из того, что проверить полмассива, наверное быстрее чем проверить весь массив.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6693 / 3082 / 1064
Регистрация: 01.06.2021
Сообщений: 11,900
17.06.2026, 15:27
Цитата Сообщение от Наталья8 Посмотреть сообщение
Здесь не в goto дело.
goto это нормально, в отличие от многих я не неистовствую, когда его вижу)) но лучше пиши без него - пусть компилятор сам расставит нужные инструкции (jmp, je/jz, jne/jnz, jl/jnge, jg/jnle, jle/jng, jge/jnl, jb/jnae, ja/jnbe, js, jo и прочие) там, где посчитает нужным. К тому же goto может помешать оптимизациям: например, нарушить структуру потока управления, из-за чего компилятору будет сложнее применять vectorization, loop unrolling и прочие штуки.
Хотя, наверняка, современные компиляторы будут умны. Но в любом случае, из-за goto есть проблема с читаемостью кода.
***
Всегда говорю на этом форуме и сейчас повторю: есть один случай, где goto реально оправдан - выход из глубоко вложенных циклов: городить bool-флаги на каждом уровне или выносить всё в отдельную функцию ради одного return, имхо, гораздо хуже.
Но, наверное, не все будут со мной согласны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.06.2026, 15:27

Создать функцию, определяющую номера элементов, которые встречаются в массиве только один раз
Создать функцию, определяющую номера элементов, которые встречаются в массиве только один раз.С++

Вывести только те слова сообщения, которые встречаются в тексте один раз
Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и знаками препинани, в конце которого...

Вывести только те слова сообщения, которые встречаются в нем ровно один раз
Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и знаками препинани, в конце которого...

Вывести только те слова сообщения, которые встречаются в нем ровно один раз
Вывести только те слова сообщения, которые встречаются в нем ровно один раз. Помогите исправить ошибку в коде. #include...

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


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

Или воспользуйтесь поиском по форуму:
180
Закрытая тема Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru