C++

Koło Młodych Miłośników Łamania Szyfrów pracuje nad oprogramowaniem służącym do odszyfrowania pewnego starożytnego manuskryptu. Jądrem systemu zostanie samouczący się analizator tekstu, a jego pierwszym modułem "zliczacz liter", którego opracowanie powierzono Tobie.

Zadanie

Opracuj program, który:
wczyta ze standardowego wejścia tekst do analizy,
dla każdej litery obliczy liczbę jej wystąpień w tekście,
wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajduje się liczba N, oznaczająca liczbę wierszy tekstu do analizy N<=150. W każdym z następujących N znajduje się ciąg złożony z maksymalnie 200 znaków spośród małych i wielkich liter alfabetu łacińskiego ('a'..'z', 'A'..'Z') oraz spacji.

Wyjście

W kolejnych wierszach należy wypisywać litery od 'a' do 'z' i od 'A' do 'Z' (w tej kolejności), pojedynczą spację oraz liczbę oznaczającą ilość wystąpień tej litery w analizowanym tekście. Litery nie występujące w tekście należy pominąć.

Przykład

Dla danych wejściowych:

2
ala ma kota
Ola ma psa

poprawną odpowiedzią jest:

a 7
k 1
l 2
m 2
o 1
p 1
s 1
t 1
O 1

1

Odpowiedzi

2010-03-29T20:08:03+02:00
#include <iostream>
#include <string>
using namespace std;

string napis;

int main()
{
int N,i,l_z=52,zn[l_z];
cin>>N;
for(i=0;i<l_z;i++) zn[i]=0;
for(int j=0;j<=N;j++)
{
getline(cin,napis);
for(i=0;i<napis.size();i++)
{
if( static_cast<int>(napis[i]>=65) && static_cast<int>(napis[i]<=90) ) zn[static_cast<int>(napis[i]-39)]++;
else if(static_cast<int>(napis[i]>=97) && static_cast<int>(napis[i]<=122) ) zn[static_cast<int>(napis[i]-97)]++;
else continue;
}
}
for(i=0;i<l_z;i++)
{
if(zn[i]!=0)
{
if(i<26) cout << "\n" << (char)(i+97) << "\t" << zn[i];
else cout << "\n" << (char)(i+39) << "\t" << zn[i];
}
}
system ("pause");
return 0;
}