fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. std::vector<size_t> CountSymbolsAppearing(const std::string &text) {
  5. std::vector<size_t> symbols_appearing(256, 0);
  6. for (auto symbol : text) {
  7. ++symbols_appearing[symbol];
  8. }
  9. return symbols_appearing;
  10. }
  11.  
  12. char SymbolFromIndex(size_t symbol_index) {
  13. return static_cast<char>(symbol_index);
  14. }
  15.  
  16. void ShowSymbolAppearingInfo(char symbol, size_t number_of_appears) {
  17. if (number_of_appears != 0) {
  18. std::cout << "[" << symbol << " ] = " << number_of_appears << '\n';
  19. }
  20. }
  21.  
  22. void ShowText(const std::string &text) {
  23. std::cout << "text: " << text << '\n';
  24. }
  25.  
  26. void ShowSymbolsAppearing(const std::vector<size_t> &symbols_appearing) {
  27. for (size_t symbol_index = 0; symbol_index < symbols_appearing.size();
  28. ++symbol_index) {
  29. ShowSymbolAppearingInfo(SymbolFromIndex(symbol_index),
  30. symbols_appearing.at(symbol_index));
  31. }
  32. }
  33.  
  34. int main() {
  35. std::string text = "this is test string";
  36. ShowText(text);
  37. ShowSymbolsAppearing(CountSymbolsAppearing(text));
  38. }
  39.  
Success #stdin #stdout 0s 3228KB
stdin
Standard input is empty
stdout
text: this is test string
[  ] = 3
[e ] = 1
[g ] = 1
[h ] = 1
[i ] = 3
[n ] = 1
[r ] = 1
[s ] = 4
[t ] = 4