Napisałem program który tak jak w temacie zlicza litery(zadanie spoj ;) ) otóż program działa poprawnie lecz przekracza limit czasu :/ wydaje mi się że przekombinowałem troche :) był bym wdzieczny gdyby ktoś zerknął i skrytykował początkującego :) co jest źle i co musiał bym poprawić żeby było lepiej :)
#include<iostream>
#include<string>
using namespace std;
string policz(string zwroc);
string sortuj(string sort);
string zam(string sort);
int main()
{
int N;
string zdanie,sumuj;
cin>>N;
if(N<=150)
{
while(N)
{
cin.ignore(2,'\n');
getline(cin,zdanie);
sumuj+=zdanie;
zdanie.clear();
N--;
}
policz(zam(sortuj(sumuj)));
}
cin.ignore();
cin.get();
}
string sortuj(string sort)
{
char zapamietaj;
string zamien;
for(unsigned int i=0;i<sort.size();i++)
{
if(sort[i]==' ')
{
sort.erase(i,1);
i--;
}
else
{
for(unsigned int j=0;j<sort.size();j++)
{
if(sort[i]<=sort[j])
{
zapamietaj = sort[i];
sort[i] = sort[j];
sort[j] = zapamietaj;
}
}
}
}
return sort;
}
string policz(string zwroc)
{
int p=0,policz=0;
signed int i=-1;
char tab[60];
do
{
do
{
i++;
policz++;
}while(i<zwroc.size() && zwroc[i]==zwroc[i+1]);
tab[p]=zwroc[i];
cout<<tab[p]<<' '<<policz<<endl;
policz=0;
p++;
}while(i<zwroc.size()-1);
return zwroc;
}
string zam(string sort)
{
int dodaj=0;
string zamien;
for(unsigned int k=0;k<sort.size();k++)
{
if(sort[k]>='a' && sort[k]<='z')
break;
dodaj++;
}
if(dodaj!=0)
{
zamien = sort.substr(dodaj,string::npos);
zamien+= sort.substr(0,dodaj);
}
return zamien;
}