Для каждого символа заданного текста указать, сколько раз встречается в тексте - C (СИ)
Формулировка задачи:
обработка символьных данных:
Для каждого символа заданного текста указать, сколько раз встречается в тексте. Сообщение об одном символе не должно встречаться больше, чем один раз.
заранее благодарю!!!!!
Решение задачи: «Для каждого символа заданного текста указать, сколько раз встречается в тексте»
textual
Листинг программы
#include <string>
#include <map>
#include <algorithm>
#include <iostream>
#include <locale>
#include <boost/lambda/lambda.hpp>
using namespace boost::lambda;
int main()
{
setlocale(LC_ALL, "");
typedef std::map<std::string::value_type, size_t> Z;
Z z;
std::string text;
std::getline(std::cin, text);
std::for_each(text.begin(), text.end(), ++var(z)[_1]);
for (Z::const_iterator it = z.begin(); it != z.end(); ++it)
std::cout
<< "Символ '" << it->first
<<"' встречается " << it->second << " раз." << std::endl;
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых заголовочных файлов для работы с текстом и map
- Установка локали на
C - Создание специализированного типа Z для хранения результатов подсчета
- Ввод текста из стандартного ввода
- Применение лямбда-функции (усиленной версии функции var) к каждому символу в тексте, используя std::for_each, и обновление значения в map для каждого уникального символа
- Вывод результатов на экран, используя цикл for и оператор std::cout
- Возврат 0 для успешного выполнения программы