Hej, mam problem z pewnym zadaniem ze spoj http://pl.spoj.com/problems/JSPACE/ program przechodzi wszystkie testy, modyfikuje tekst poprawnie, ale niestety nie przechodzi na spoju, bo ciągle wyrzuca błąd niepoprawny wynik. Jeśli ktoś mógłby coś poradzić, byłbym bardzo wdzięczny, bo już nie wiem co robię źle. Wczytuje string poprzez getline, jak i wczytywałem też poprzez getline w while ale oba przypadki nie przechodzą.
Struktura służy tylko do testowania poprawności algorytmu.
Oto mój kod:
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
using namespace std;
struct TestCase {
string wejscie;
string wyjscie;
} daneTestowe[] = {
{
"wyraz",
"wyraz"
},
{
"wyraz ",
"wyraz"
},
{
" wyraz",
"Wyraz"
},
{
"Ide na spacer z psem. Do zobaczenia.",
"IdeNaSpacerZPsem.DoZobaczenia."
},
{
"Dzisiaj jest czwartek,",
"DzisiajJestCzwartek,"
},
{
"A jutro bedzie piatek.",
"AJutroBedziePiatek."
},
{
"a to jest tekst z duza iloscia spacji.\na tu jest druga linia",
"aToJestTekstZDuzaIlosciaSpacji.\naTuJestDrugaLinia"
},
{
"aaa bbb ccc ddd e fff",
"aaaBbbCccDddEFff"
},
{
"A A A",
"AAA"
},
{
"zadanie jakies",
"zadanieJakies"
},
{
"tekst\n\ntekst",
"tekst\n\ntekst"
},
{
"pierwszy wyraz",
"pierwszyWyraz"
},
{
"dZiSiaj jest czwartek,\na jUTRo bEdZie piatek.",
"dZiSiajJestCzwartek,\naJUTRoBEdZiePiatek."
}
};
const int ileTestow = sizeof(daneTestowe)/sizeof(daneTestowe[0]);
string przeksztalc(string nowy);
int main() {
// test case part
int ileZle = 0;
for(int i = 0; i < ileTestow; ++i) {
string wynik = przeksztalc(daneTestowe[i].wejscie);
if(wynik != daneTestowe[i].wyjscie) {
cout << "nadal jest zla dla wejscia: [" << daneTestowe[i].wejscie << ']' << endl;
cout << "wyszlo : [" << wynik << ']' << " size: " << wynik.size() << endl;
cout << "powinno : [" << daneTestowe[i].wyjscie << ']' << " size: " << daneTestowe[i].wyjscie.size() << endl;
ileZle++;
}
}
cout << "obecnie jest zle dla " << ileZle << " przypadkow " << endl;
// test case part
/*string sms;
getline(cin, sms);
cout << przeksztalc(sms) << endl;
*/
return 0;
}
string przeksztalc(string nowy) {
string output = "";
/*
for(unsigned int i = 0; i < nowy.size(); i++) {
if(nowy[i] == ' ') {
nowy.erase(i, 1);
nowy[i] = toupper(nowy[i]);
}
}
*/
for(int i = 0; i < nowy.length(); ++i) {
if(nowy[i] != ' ') output += nowy[i];
if(nowy[i] == ' ') nowy[i+1] = toupper(nowy[i+1]);
}
return output;
}