Hej, mam mały problem z zadaniem ze SPOJ http://pl.spoj.com/problems/AL_14_01/
Program ma za zadanie, zliczyć częstość wystąpienia liter w tekście, napisałem taki oto programik poniżej, progam wyświetla '' w zależnosci w ilu % wystąpiła litera. Miałem to napisane również tak, że osobno wypisywało literke i wypisywało '' od ilości %, ale również nie przechodziło, choć % są poprawne. Podsyłam wersje, gdzie wrzuciłem wszystko do vectora, z myślą, że tak przejdzie.
Niestety program, nie przechodzi w spoju, mógłby ktoś rzucić okiem i pokierować gdzie mogłem popełnić błąd?
Prosiłbym o wyrozumiałość, dla początkującego :)
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int percent(int length, int howMuch) {
if(length <= 0) return 0;
return ((howMuch * 100) / length);
}
int main() {
string tekst;
vector< string > results;
results.resize(26);
int n;
getline(cin, tekst);
transform(tekst.begin(), tekst.end(), tekst.begin(), ::toupper);
n = tekst.length();
if(n >= 1 && n <= 1000000) {
char letters[26];
for(int i = 0; i < 26; ++i) {
letters[i] = (char)(i + 65); // wypelnienie literkami
}
int table[26];
for(int i = 0; i < 26; ++i) table[i] = 0; // clearing table
for(int i = 0; i < n; ++i) {
for(int j = 0; j < 26; j++) {
if( letters[j] == tekst[i]) {
table[j] += 1;
}
}
}
for(int i = 0; i < tekst.length(); ++i) if(tekst[i] == (char)32) n -= 1; // deleting whitespaces
for(int i = 0; i < 26; ++i) {
table[i] = percent(n, table[i]);
}
for(int i = 0; i < 26; ++i) {
results[i] += letters[i];
for(int j = 0; j < table[i]; ++j) {
results[i] += "*";
}
}
for(int i = 0; i < 26; ++i) {
cout << results[i] << endl;
}
}
return 0;
}