C++

Множества символов в строке

Подсчитать количество повторений элементов, заданного множества символов, во введенной строке.
Суть задачи такова, вводим строку символов, после чего подсчитываем количество повторений каждого символа в строке. Таким образом количество повторений любого символа будет равно как минимум единице. Например, если строка состоит из 10 различных символов, значит в выводе программы должно быть 10 чисел. каждое из которых характеризует количество вхождений данного символа в строку.

Из примера видно, что во введенной строке нашлось два символа h и два символа i, остальных символов — по одному. Насколько мы можем судить, данный вывод похож на правду.

Решение:

Этот исходник нам прислал пользователь нашего сайта Иван Погорелый, большое спасибо ему за это. Причем программа использует 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;
}


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

Ввести строку:

Nightwish
N 1
g 1
h 2
i 2
s 1
t 1
w 1


Из примера видно, что во введенной строке нашлось два символа h и два символа i, остальных символов — по одному. Насколько мы можем судить, данный вывод похож на правду.
Теги:
Множества символов
Добавлено: 26 Февраля 2015 17:30:13 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...