Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
batyr
1 / 1 / 1
Регистрация: 19.10.2012
Сообщений: 64
#1

Определить символ, встречающийся в тексте с максимальной частотой - C++

08.11.2012, 13:39. Просмотров 1075. Ответов 5
Метки нет (Все метки)

Дана строка длиной не более 80 символов, оканчивающаяся точкой. Нужно определить символ, встречающийся в тексте с максимальной частотой.
http://www.cyberforum.ru/cpp-beginners/thread1698828.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 13:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить символ, встречающийся в тексте с максимальной частотой (C++):

Заменить каждый символ массива встречающийся после первого вхождения символа * на символ -
Даны натуральное число n, символы s1,…,sn. Преобразовать последовательность...

Определить длину содержащейся в тексте максимальной последовательности символов, отличных от букв
для заданного текста определить длину содержащейся в нём максимальной...

Определить длину содержащейся в тексте максимальной серии символов, отличных от букв латинского алфавита
1.Текст – это непустая последовательность букв. Дан текст. Определить длину...

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

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

5
cosmo77
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 7
08.11.2012, 13:41 #2
создать массив счетчиков символов . пройтись по строке и заполнить его. потом пройтись по массиву и найти максимальное
0
DiffEreD
1441 / 778 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.11.2012, 16:06 #3
С помощью карты:
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
#include <iostream>
#include <map>
#include <string>
using std::cout;
using std::endl;
using std::string;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    string str = "Дана строка длиной не более 80 символов, оканчивающаяся точкой. "
        "Нужно определить символ, встречающийся в тексте с максимальной частотой.";
    std::map<char, size_t> chars;
    size_t i = 0;
    while (str[i++])
    {
        if (str[i] == ' ')
            continue;
        chars[ str[i] ]++;
    }
    for (auto cur = chars.cbegin(); cur != chars.cend(); cur++)
        cout<<(*cur).first<<": "<<(*cur).second<<endl;
    size_t maxElem = chars.cbegin()->second;
    char maxCh = chars.cbegin()->first;
    for (auto it = chars.cbegin(); it != chars.cend(); it++)
    {
        if ((*it).second>maxElem) 
        {
            maxElem = (*it).second;
            maxCh = (*it).first;
        }
    }
    cout<<"Символ \""<<maxCh<<"\" наибольше из всех встречается в строке "<<maxElem<<" раз\n";
    system("pause");
    return 0; 
}
0
batyr
1 / 1 / 1
Регистрация: 19.10.2012
Сообщений: 64
09.11.2012, 19:38  [ТС] #4
yuron_477, а можно его только с stdio.h сделать?
0
Kuzia domovenok
2208 / 1977 / 440
Регистрация: 25.03.2012
Сообщений: 6,936
Записей в блоге: 1
09.11.2012, 20:04 #5
Цитата Сообщение от batyr Посмотреть сообщение
yuron_477, а можно его только с stdio.h сделать?
Можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(){
  unsigned char text[100];
  char max_id;
  int i=0;
  int id[256];
  i=256; while(i){
         i--;
         id[i]=0;
         }
  printf("Input text");
  scanf("%s", text);
  while(text[i]){id[text[i]]++; if (id[text[i]]>=id[max_id]) max_id=text[i]; i++;}
  printf("\n%c - maximum", max_id);
  return 0;
}
только с stdio. Тут я согласен.
1
Kuzia domovenok
2208 / 1977 / 440
Регистрация: 25.03.2012
Сообщений: 6,936
Записей в блоге: 1
14.12.2012, 17:09 #6
Всего существует 256 ASCII символов.
Cначала мы предполагаем, что каждый встречается 0 раз,
поэтому храним 256 счётчиков для каждого символа в массиве id[256]
затем, получив очередной символ, увеличиваем его счётчик на единицу в массиве id под номером равным коду символа text[i]
Заодно сразу же и проверяем, не превзошёл ли счётчик после увеличения значение для наиболее частого символа.
Если превзошёл, то наиболее частым символом становится он.
1
14.12.2012, 17:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 17:09
Привет! Вот еще темы с решениями:

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

Функция определяющая символ встречающийся в строке чаще всего
нужно написать функцию которая подает на вход строку , вывести на экран...

Указать символ, встречающийся в данной строке чаще всего
Дана строка, содержащая текст, созданный при помощи символов латинского...

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


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

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

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