#include <iostream>
#include <vector>
#include <sstream>
#include <cstdlib>
typedef unsigned int uint32 ;
using namespace std;
class Processor
{
public :
Processor( ) ;
void collectData( ) ;
protected :
void processData( ) ;
void report( vector < uint32 > & dataForReport) ;
string toString( int number) ;
private :
vector < uint32 > m_data;
uint32 m_n;
} ;
Processor:: Processor ( )
{
cout << "unesi broj n : " ;
cin >> m_n;
cout << endl;
}
void Processor:: collectData ( )
{
uint32 temp;
while ( m_n > 0 )
{
cout << "molim upis broja : " ;
cin >> temp;
m_data.push_back ( temp) ;
cout << endl;
m_n-- ;
}
processData( ) ;
}
string Processor:: toString ( int number)
{
stringstream ss;
ss << number;
return ss.str ( ) ;
}
void Processor:: processData ( )
{
vector < uint32 > tempVec( 10 , 0 ) ;
for ( uint32 i = 0 ; i < m_data.size ( ) ; i++ )
{
uint32 temp;
string str;
str + = toString( m_data[ i] ) [ 0 ] ;
temp = atoi ( str.c_str ( ) ) ;
tempVec[ temp] ++ ;
}
report( tempVec) ;
}
void Processor:: report ( vector < uint32 > & dataForReport)
{
for ( uint32 i = 0 ; i < dataForReport.size ( ) ; i++ )
{
cout << "broj " << i << " se pojavljuje " << dataForReport[ i] <<
" puta\n " ;
}
}
int main( )
{
Processor proc;
proc.collectData ( ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGNzdGRsaWI+Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzI7Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUHJvY2Vzc29yCnsKICBwdWJsaWM6CiAgICBQcm9jZXNzb3IoKTsKCiAgICB2b2lkIGNvbGxlY3REYXRhKCk7CgogIHByb3RlY3RlZDoKICAgIHZvaWQgcHJvY2Vzc0RhdGEoKTsKICAgIHZvaWQgcmVwb3J0KHZlY3RvciA8IHVpbnQzMiA+ICZkYXRhRm9yUmVwb3J0KTsKICAgIHN0cmluZyB0b1N0cmluZyhpbnQgbnVtYmVyKTsKCiAgcHJpdmF0ZToKICAgICB2ZWN0b3IgPCB1aW50MzIgPiBtX2RhdGE7CiAgICB1aW50MzIgbV9uOwoKfTsKCgpQcm9jZXNzb3I6OlByb2Nlc3NvcigpCnsKICAgIGNvdXQgPDwgInVuZXNpIGJyb2ogbiA6ICAiOwogICAgY2luID4+IG1fbjsKICAgIGNvdXQgPDwgZW5kbDsKCn0KCgp2b2lkIFByb2Nlc3Nvcjo6Y29sbGVjdERhdGEoKQp7CiAgICB1aW50MzIgdGVtcDsKICAgIHdoaWxlIChtX24gPiAwKQogICAgewogICAgICAgY291dCA8PCAibW9saW0gdXBpcyBicm9qYSA6ICAiOwogICAgICAgY2luID4+IHRlbXA7CiAgICAgICBtX2RhdGEucHVzaF9iYWNrKHRlbXApOwogICAgICAgY291dCA8PCBlbmRsOwogICAgICAgbV9uLS07CiAgICB9CgogICAgcHJvY2Vzc0RhdGEoKTsKCn0KCgpzdHJpbmcgUHJvY2Vzc29yOjp0b1N0cmluZyhpbnQgbnVtYmVyKQp7CiAgICBzdHJpbmdzdHJlYW0gc3M7CiAgICBzcyA8PCBudW1iZXI7CiAgICByZXR1cm4gc3Muc3RyKCk7Cn0KCgp2b2lkIFByb2Nlc3Nvcjo6cHJvY2Vzc0RhdGEoKQp7CgogICAgdmVjdG9yIDwgdWludDMyID4gdGVtcFZlYygxMCwgMCk7CiAgICBmb3IgKHVpbnQzMiBpID0gMDsgaSA8IG1fZGF0YS5zaXplKCk7IGkrKykKICAgIHsKICAgICAgIHVpbnQzMiB0ZW1wOwogICAgICAgc3RyaW5nIHN0cjsKICAgICAgIHN0ciArPSB0b1N0cmluZyhtX2RhdGFbaV0pWzBdOwogICAgICAgdGVtcCA9IGF0b2koIHN0ci5jX3N0cigpICk7CiAgICAgICB0ZW1wVmVjW3RlbXBdKys7CiAgICB9CgogICAgcmVwb3J0KHRlbXBWZWMpOwoKfQoKCnZvaWQgUHJvY2Vzc29yOjpyZXBvcnQodmVjdG9yIDwgdWludDMyID4gJmRhdGFGb3JSZXBvcnQpCnsKICAgIGZvciAodWludDMyIGkgPSAwOyBpIDwgZGF0YUZvclJlcG9ydC5zaXplKCk7IGkrKykKICAgIHsKICAgICAgIGNvdXQgPDwgImJyb2ogIiA8PCBpIDw8ICIgc2UgcG9qYXZsanVqZSAiIDw8IGRhdGFGb3JSZXBvcnRbaV0gPDwKICAgICAgICAgICIgcHV0YVxuIjsKICAgIH0KCn0KCgppbnQgbWFpbigpCnsKICAgIFByb2Nlc3NvciBwcm9jOwogICAgcHJvYy5jb2xsZWN0RGF0YSgpOwoKCiAgICByZXR1cm4gMDsKfQ==