#include <string>
#include <iostream>
#include <cstddef>
// consider 128 ASCII decimal and their coresponding character codes
int charASCIIArray[ 128 ] = { 0 } ;
void count_char( const std:: string & s)
{
for ( const auto & it: s)
{
if ( ( 'A' <= it && it <= 'Z' ) || // if char between (A,B,....,Z) or
( 'a' <= it && it <= 'z' ) ) // between (a,b,....,z)
charASCIIArray[ static_cast < int > ( it) ] ++ ; // we count each corresponding array then
}
}
int main( )
{
std:: string userinput = "random words WITH *- aLl" ;
count_char( userinput) ;
for ( std:: size_t index = 0 ; index < 128 ; ++ index)
if ( charASCIIArray[ index] ! = 0 )
std:: cout << "Letter " << static_cast < char > ( index) // convert back to char
<< " occured " << charASCIIArray[ index] << " times.\n " ;
return 0 ;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGRlZj4KLy8gY29uc2lkZXIgMTI4IEFTQ0lJIGRlY2ltYWwgYW5kIHRoZWlyIGNvcmVzcG9uZGluZyBjaGFyYWN0ZXIgY29kZXMKaW50IGNoYXJBU0NJSUFycmF5WzEyOF0gPSB7MH07Cgp2b2lkIGNvdW50X2NoYXIoY29uc3Qgc3RkOjpzdHJpbmcmIHMpCnsKICAgZm9yKGNvbnN0IGF1dG8mIGl0OiBzKQogICB7CiAgICAgICAgaWYoKCdBJyA8PSBpdCAmJiBpdCA8PSAnWicpIHx8ICAgICAvLyBpZiBjaGFyIGJldHdlZW4gKEEsQiwuLi4uLFopIG9yCiAgICAgICAgICAgKCdhJyA8PSBpdCAmJiBpdCA8PSAneicpICkgICAgICAvLyAgICAgICAgIGJldHdlZW4gKGEsYiwuLi4uLHopCiAgICAgICAgICAgY2hhckFTQ0lJQXJyYXlbc3RhdGljX2Nhc3Q8aW50PihpdCldKys7IC8vIHdlIGNvdW50IGVhY2ggY29ycmVzcG9uZGluZyBhcnJheSB0aGVuCiAgIH0KfQoKaW50IG1haW4oKQp7CiAgIHN0ZDo6c3RyaW5nIHVzZXJpbnB1dCA9ICJyYW5kb20gd29yZHMgV0lUSCAqLSBhTGwiOwoKICAgY291bnRfY2hhcih1c2VyaW5wdXQpOwogICBmb3Ioc3RkOjpzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDEyODsgKytpbmRleCkKICAgICAgaWYoY2hhckFTQ0lJQXJyYXlbaW5kZXhdICE9IDApCiAgICAgICAgc3RkOjpjb3V0IDw8ICJMZXR0ZXIgIiA8PCBzdGF0aWNfY2FzdDxjaGFyPihpbmRleCkgIC8vIGNvbnZlcnQgYmFjayB0byBjaGFyCiAgICAgICAgICAgICAgICAgIDw8ICIgb2NjdXJlZCAiIDw8IGNoYXJBU0NJSUFycmF5W2luZGV4XSA8PCAiIHRpbWVzLlxuIjsKCiAgIHJldHVybiAwOwp9Cg==