Для заданной символьной строки вывести на экран те символы, которые встречаются в ней только один раз - C (СИ)
Формулировка задачи:
Для заданной символьной строки вывести на экран те символы, которые встречаются в ней только один раз.
Решение задачи: «Для заданной символьной строки вывести на экран те символы, которые встречаются в ней только один раз»
textual
Листинг программы
#include <iostream> #include <string> #include <cstdlib> #include <ctime> #include <algorithm> #include <iterator> #include <map> struct Random { Random(int min_, int max_) : min(min_), max(max_) {} int operator()() { return rand() % (max - min + 1) + min; } int min, max; }; int main(int argc, char *argv[]) { srand(time(NULL)); std::string line; std::generate_n(std::back_inserter(line), 25 + rand() % 5, Random('a', 'z')); std::cout << "Line '" << line << "'" << std::endl; std::map<char, int> counts; for (std::string::const_iterator i = line.begin(); i != line.end(); ++i) ++counts[*i]; std::cout << "Letters, met once: "; for (std::map<char, int>::const_iterator i = counts.begin(); i != counts.end(); ++i) if (i->second == 1) std::cout << i->first << " "; }
Объяснение кода листинга программы
В этом коде:
- Структура
Random
используется для генерации случайных чисел в заданном диапазоне. - В функции
main
создается строкаline
длиной от 25 до 30 символов, выбираемых случайным образом из диапазона от 'a' до 'z'. - Создается
map
counts
, в котором ключами являются символы из строкиline
, а значениями - количество их вхождений в строку. - В цикле происходит перебор всех символов строки
line
и увеличение соответствующего значения вmap
counts
. - Выводится на экран список символов, встречающихся в строке только один раз.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д