Подсчитать количество повторений элементов, заданного множества символов, во введенной строке.
Суть задачи такова, вводим строку символов, после чего подсчитываем количество повторений каждого символа в строке. Таким образом количество повторений любого символа будет равно как минимум единице. Например, если строка состоит из 10 различных символов, значит в выводе программы должно быть 10 чисел. каждое из которых характеризует количество вхождений данного символа в строку.
Этот исходник нам прислал пользователь нашего сайта Иван Погорелый, большое спасибо ему за это. Причем программа использует STL контейнер map, это хороший пример использования контейнеров вместо обычных, стандартных средств языка С++.
#include<iostream> using namespace std; #include <map> // STL контейнер map #include <cstdio> #include <cstring> int main() { setlocale(LC_ALL, "rus"); map <char,int> chars;// создаем контейнер map <char,int>::iterator begin, at, end; char str[500]; cout<<"Ввести строку:"<<endl; gets(str);// вводим строку for(unsigned int i = 0; i < strlen(str); i++){ chars[str[i]]++;// считаем каждый символ } begin = chars.begin(); end = chars.end(); for(at = begin; at != end; at++) { cout << at-> first << 't'<< at->second << endl; // выводим результат } return 0; }
Для сравнения, попробуйте реализовать данную программу, используя встроенные средства языка С++. Уверен, что кода у вас получится в несколько раз больше. Смотрим пример работы программы к этому исходному коду.
Из примера видно, что во введенной строке нашлось два символа h
и два символа i
, остальных символов — по одному. Насколько мы можем судить, данный вывод похож на правду.
CppStudio.com
Ввести строку: Nightwish N 1 g 1 h 2 i 2 s 1 t 1 w 1
Комментарии
vlad bolltrukanis