Zadanie JSPACE nie zalicza na spoju

0

Witam
nie rozumiem dlaczego spoj nie przepuszcza mi zadania, wpisując różne testy mam niby dobrze, a jednak spoj nie przepuszcza.

#include <iostream>
#include <string>
#include <ctype.h>

using namespace std;

int main()
{
    string napis;
    while (getline(cin,napis))
    {
        napis[0]=toupper(napis[0]);
        for(int i = 0;i<napis.length();i++)
        {
            if (napis[i]!=' ')
            {
                cout << napis[i];
            }
            if (napis[i]==' ' && napis[i+1]!=' ')
            {
                napis[i+1] = toupper(napis[i+1]);
            }
        }
        cout << "\n";
    }
}

 
0

Podaj link do zadania. Przecież ludzie nie będą specjalnie szukać tego zadania na spoju, żeby Ci odpowiedzieć.

0

Przepraszam, nie zauważyłem, że na początku linku nie wkleiłem
http://pl.spoj.com/problems/JSPACE/

1

Wziąłeś pod uwagę komentarz który jest pod zadaniem: "Jeśli pierwszy wyraz w linijce jest z małej litery, to tak też powinien być wypisany - inaczej nie przejdzie. "?
Wydaje się, że nie.

0

Możliwe, że nie, mam tylko tak, że zawsze pierwsza litera w stringu z małej zamieniana jest na dużą(myślałem, że to przeszkadza, ale jak wypisuje inne znaki ascii to nie zamienia ich), warunek to jeżeli po spacji jest mała litera to zamienia ją na dużą. Chodzi może o znaki interpunkcyjne? Da się to jakoś zrobić tak, aby nie wypisywać kilku przypadków? Nie wiem jak zapisać warunek "jeżeli napis[i] jest inny od char 65 do 90 i 97 do 122" char w ifie nie kompiluje się nawet, stąd też biblioteka <ctype.h> u mnie (problem był z 1 znakiem w getlinie), a nie chcę zamieniać tego na tablice charów jak już zacząłem to na stringu

0

Napisałem Ci co jest źle. Niepotrzebnie zmieniasz pierwszy znak na wielki. Usuń linijkę 12 i po problemie.

0

Jak po chwili przeczytalem twoj post raz jeszcze to zrozumialem o co chodzi, dziekuje. Przed przeczytalem ten komentarz, ale bylem nastawiony na ustalony z gory pomysl. Troche przekombinowalem, a robienie czegos za jednym zamachem na sile nie sluzy, gdy sie mysli blednie od poczatku.

0

Popraw w ten deseń:

#include <iostream>
#include <iomanip>
#include <sstream>
#include <ctype.h>
 
using namespace std;
 
int main()
{
    string napis;
    while (getline(cin,napis))
    {
        istringstream linia(napis);
        string wyraz;
        while (linia>> wyraz) {
              ………
        }
        ………
        cout << "\n";
    }
    cout << flush;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1