9 / 9 / 2
Регистрация: 11.01.2013
Сообщений: 157

Самый редко встречающийся элемент в массиве

11.01.2014, 20:14. Показов 7933. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую!
Прошу помощи. Собственно идея задачи вроде бы проста нужно найти самый часто и редко встречающийся эллемент в массиве.

Вот я написал для поиска частого элемента и поиска редкого, загвостка в том что он выводит только одно вхождение, т.е. если несколько элементов встречаются одинаковое колличества раз, то он выводит только последние увиденные.
вот код, для вывода редко встречающегося ээлемента. Как сделать что бы он все выводил а не один.
Точнее куда запендюрить вывод. Вставляя в циклы он мне всякую ерись выдает. (код написан на MVS 2010)
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
31
32
33
34
35
36
37
38
39
40
void main(void)
{   int n;
    cin>>n;
    char *m=new char[n];
 
    for (int i=0;i<n; i++)
    {
      //m[i]=rand()%100;
        cin>>m[i];
 
    //  cout<<" "<<m[i];
    }
       int k=0,k1=0,kmax,kmin;int i=0,j,fi,fj=0;
      
       while(i<n)
       {
           kmax=0;
 
           for(j=i+1;j<n;j++)   
         {
             
             if(m[j]!=m[i])         
             { 
 
                 k++;
                 fi=j;       
             
             }  
            
         }
           
        i++;
        
      
       }
     
      cout<<" "<<m[fi]; 
       delete m;
        _getch();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.01.2014, 20:14
Ответы с готовыми решениями:

Самый редко встречаемый символ
Задан массив A. Найти самый редко встречаемый символ. Может быть пригодится кому, но вот исходник задачи обратной - самый часто...

Найти самый часто встречающийся символ в тексте
я &quot;сделал&quot; программу шифратор и дешифратор текста по методу цезаря, но теперь мне надо сделать так чтобы программа показывала самый...

Найти в массиве элемент, самый близкий по величине к заданному числу
Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу. С++ Входные данные В первой...

37
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
12.01.2014, 00:29
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Tulosba Посмотреть сообщение
минимум чего?
По коду выше, пытаюсь найти минимальный натуральный элемент массива (т.е. больше нуля). Можно было-бы через std::for_each пройтись, но там лямбду надо да и опять тоже сравнение будет, хотелось бы что-бы std::min_element как то не брал во внимание нулевые значения.

Добавлено через 1 минуту
koto_fey, п.с. надо добавить еще выход при пустой строке (:
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.01.2014, 00:34
Цитата Сообщение от xoror Посмотреть сообщение
unsigned Freq[256] = {0};
C++
1
unsigned Freq[256] = {};
тоже покатит
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2014, 00:51
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
unsigned Freq[256] = {};
тоже покатит
Плохо только, что:
- unsigned;
- опущен int;
- размер захардкожен.

Цитата Сообщение от outoftime Посмотреть сообщение
не брал во внимание нулевые значения.
Тут уж, либо свой предикат, либо удалить неугодные элементы перед поиском. Третьего не дано.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
12.01.2014, 01:21
koto_fey, если вопросов нет, значит вам все понятно.

Добавлено через 55 секунд
Цитата Сообщение от Tulosba Посмотреть сообщение
Плохо только, что:
- unsigned;
- опущен int;
Почему плохо то? Это ведь равносильные описание типа. (unsigned int, unsigned)
0
9 / 9 / 2
Регистрация: 11.01.2013
Сообщений: 157
12.01.2014, 09:18  [ТС]
Да я уж спать лег в самый разгар темыу нас то 3 ночи было.
Вопросы чуть позже буду задовать и буду рад если на них ответят.

Добавлено через 47 секунд
вопросы позже буду задавать и если на них ответят буду очень рад.
0
12.01.2014, 09:57

Не по теме:

koto_fey, а ты вставляй ссылки на имена, к кому обращаешься, тогда этому человеку придет сообщение что его упомянули "..не злим тихим словом.." Т.Г. Шевченко (:

0
9 / 9 / 2
Регистрация: 11.01.2013
Сообщений: 157
12.01.2014, 11:16  [ТС]
outoftime,
q=s[i];
Freq[q]++;
можешь пояснить вот это или как так получается что мы индексируем символом. Я че то в нашей нет помойке ни чего не нашел.

Добавлено через 32 секунды
Это из второго поста

Добавлено через 3 минуты
Аааа! Кажись допер.
Получается что мы передаем массиву строку и потом как индекс ее прибавляем посимвольно, тем самым ее сканируем. Ну или вроде того.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38226 / 21158 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
12.01.2014, 12:58
Цитата Сообщение от xoror Посмотреть сообщение
В цикле идет только обнуление всех элементов массива. 256 итераций!
- это копейки.

Добавлено через 1 минуту
Цитата Сообщение от Tulosba Посмотреть сообщение
Благодаря строке 10 она у Вас как минимум квадратичная.
- с какого перепуга? Там один цикл до n...
0
 Аватар для xoror
31 / 31 / 4
Регистрация: 15.12.2013
Сообщений: 147
12.01.2014, 13:06
Цитата Сообщение от Catstail Посмотреть сообщение
с какого перепуга? Там один цикл
И на каждой итерации вызывается функция strlen() для вычисления длины этой строки

Цитата Сообщение от Catstail Посмотреть сообщение
C++
1
2
3
4
5
for (i=0; i<strlen(s); i++) 
{ 
   q=s[i]; 
   Freq[q]++; 
}
Сама функция strlen() примерно так выглядит
C++
1
2
3
4
5
6
7
8
9
int strlen(const char *s)
{
   int i = 0;
   
   while (s[i])
      ++i;
 
   return i;
}
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38226 / 21158 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
12.01.2014, 13:13
Цитата Сообщение от xoror Посмотреть сообщение
И на каждой итерации вызывается функция strlen() для вычисления длины этой строки
- не думаю... Компилятор не так глуп.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2014, 13:15
Цитата Сообщение от Catstail Посмотреть сообщение
с какого перепуга? Там один цикл до n...
см. сообщение #15 Самый редко встречающийся элемент в массиве
0
 Аватар для xoror
31 / 31 / 4
Регистрация: 15.12.2013
Сообщений: 147
12.01.2014, 13:30
Catstail наверно уже пожалел о том, что помог с решением задачи Вон какую критику получил
А с другой стороны это правильно. Ведь на ошибках учатся.
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
12.01.2014, 13:51
Цитата Сообщение от Catstail Посмотреть сообщение
- не думаю... Компилятор не так глуп.
Если бы вместо char* s было бы const char* s, то компилятор скорее всего соптимизировал, а так - нет
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38226 / 21158 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
12.01.2014, 14:39
Цитата Сообщение от xoror Посмотреть сообщение
Вон какую критику получил
- да не критика это вовсе... Мелкая придирка. Во-первых, оптимизирующий компилятор в состоянии распознать, что в цикле строка не меняется, так что нет необходимости перевычислять эту длину на каждом витке. А во-вторых, код легко чуть подправить, и база для "критики" исчезнет:

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
31
32
33
34
void PrintRare(char *s)
{
    unsigned int i,min,l,Freq[256];
    char q;
 
    l=strlen(s);
 
    /* в Freq[i] будет частота символа с кодом i */ 
 
    for (i=0; i<256; i++) Freq[i]=0; /* чистим */
 
    for (i=0; i<l; i++)
    {
        q=s[i];       /* код очередного символа */
        Freq[q]++; /* увеличиваем соотв. элемент Freq */
    }
 
    /* ищем минимум частот (отличных от нуля!) */
 
    min=l;
 
    for (i=0; i<256; i++)
        if ((Freq[i] > 0) && (Freq[i] < min)) min=Freq[i]; /* если частота символа меньше текущей
                                                                            запомним */
 
    /* печать символов (всех) у которых частота минимальна */
 
    for (i=0; i<256; i++)
        if (Freq[i] == min)
        {
            q=i;
            cout << q << endl;
        }
}
вот и все... Комментарии - по просьбе TC.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.01.2014, 15:37
Цитата Сообщение от Catstail Посмотреть сообщение
Во-первых, оптимизирующий компилятор в состоянии распознать, что в цикле строка не меняется, так что нет необходимости перевычислять эту длину на каждом витке.
вы попробуйте тест запустить, у меня вот совершенно разный результат выдает. Да даже если разница заметна лишь в дебаге, юнит тесты никто не отменял.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38226 / 21158 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
12.01.2014, 21:13
Цитата Сообщение от MrGluck Посмотреть сообщение
совершенно разный результат выдает
- разный с чем?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.01.2014, 21:17
Цитата Сообщение от Catstail Посмотреть сообщение
- разный с чем?
разный при использовании
C++
1
2
l=strlen(s);
for (i=0; i<l; i++)
и
C++
1
for (i=0; i < strlen(s); i++)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38226 / 21158 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
12.01.2014, 21:46
Вероятно, это зависит от реализации компилятора.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2014, 21:46

В заданной матрице найти самый большой отрицательный элемент и самый маленький положительный и вывести их на экран
Помогите пожалуйста с заданиями) Задание 1: Напишите программу, которая создает двухмерный массив и заполняет его по следующему принципу:...

Вывести те числа, которые наиболее редко встречаются в массиве и количество их повторений
Дан одномерный массив из 150 случайных целых чисел в диапазоне от 14 до 37 включительно. Вывести те числа, которые наиболее редко...

Определить, какой символ наиболее редко встречается в заданном массиве(шаблоны)
Доброго времени суток, товарищи эксперты! Написал программу по следующему заданию: Задан массив int A, элементы которого могут быть...

Найти второй самый большой элемент массива и второй самый маленький элемент массива
Помогите пожалуйста: Найти второй самый большой элемент массива и второй самый маленький элемент массива.

Найти чаще всего встречающийся элемент массива
#include &lt;iostream&gt; using namespace std; int main(void) { const int n=10; int a = { 1,2,0,1,2,1,3,3,4,2 }; int k,l,max; ...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Опции темы

Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
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