Witam!
Mam problem z zadniem ze spoja - spacje.
Link:
http://pl.spoj.pl/problems/JSPACE/
Program nie chce działać, gdy pomiędzy wyrazami ma więcej spacji. Dla wyrażenia z jedną spacją działa: "Ala ma kota " zamienia na "AlaMaKota" itp.
Jednak już "Ala ma kota" zamienia na "Ala maKota". Nie wiem z czego to się bierze, mój program wygląda tak:
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
string napis;
while(getline(cin , napis))
{
int dl = napis.size();
for(int i=0; i<dl; i++)
{
if(isspace(napis[i])) // sprawdzam czy aktualny znak w stringu jest spacją
{
if (isalpha(napis[i+1])) // jeśli tak, to sprawdzam czy kolejny jest literą
{
napis[i] = napis[i+1] - 32; //wtedy ją zamieniam na dużą i cofam o jeden do tyłu
for(int a=1; a<dl-i; a++)
napis[a+i] = napis[i+a+1]; // cofam cały wyraz o jeden (bo przecież usunąłem spację)
}
else if (isspace(napis[i+1])) // jeśli kolejny znak jest też spacją
{
for(int a=0; a<dl-i; a++)
napis[a+i] = napis[i+a+1]; // to przesuwam cały ciąg o jeden i w ten sposób usuwam tę spację
}
}
}
cout << napis << endl; //wypisanie zmodyfikowanego napisu
}
}
W komentarzach opisałem pokrótce jak chciałem zrealizować 'algorytm' do tego zadania. Nie wyszło dla 'multispacji'.
Z góry dzięki za jakieś wskazówki, ja siedzę nad tym już z godzinę i się poddałem ;s