[C++] Odwrócenie kolejności wyrazów w ciągu

0

Witajcie,
mam zrobić do szkoły program, którego zadaniem jest odwrócenie kolejność wyrazów w zdaniu. Nie wiem czy może nie wpadłem na jakąś prostrzą metodę, ale na razie jestem początkujący w c++ i możliwe że moja metoda jest jakaś lewa. Problem się nie wiadomo skąd pojawia. Mój dev-cpp kompiluje ładnie, ale niektóre zdania nie są przestawiane i konsola znika przed ich wyświetleniem. Co ciekawe niektóre zdania przestawia dobrze bez ostatniej spacji, ale to akurat nie jest problem.

Kod macie tutaj:
http://wklej.org/id/248595/

Moglibyście mi pomóc jakoś? Myślę, że to nie będzie bardzo pracochłonne.
Pozdrawiam,
Tomek

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

using namespace std;

int main()
{
    string ciag ,wyraz="",wyjscie="";
    int i ;
    getline(cin,ciag);
    for (i = ciag.length() ; i>= 0 ; i--)
    {
        if (ciag[i] <= 32) // literka mniejsza od spacji (np. tabulacja) lub spacja
        {
        wyjscie += wyraz ;
        wyraz = "";
        }
                 wyraz = ciag[i] + wyraz;
   }
    wyjscie +=wyraz;
    cout<< wyjscie ;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Teraz prościej sie nie zrobi chyba :D

0

A ja zrobiłem prościej chyba :) tzn krócej

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
    string wynik,napis,slowo;
    getline(cin,napis);
    istringstream ss(napis);
    while(ss>>slowo)    wynik = (slowo + " " + wynik);
    cout << wynik << endl;
    return 0;
}
0

@up: po co ta spacja wiodąca?

0

Pobieram słowa ze strumienia a one są bez białych znaków

0

wiem, no ale w wyniku ZAWSZE masz spację wiodącą :P
Zresztą problem już był i z odrobiną wysiłku można znaleźć inne rozwiązania.

0

W sumie nie szukałem innych rozwiązań, bo nie chciałem 'ściągać z neta', żeby nie było że nie umiem tego sam zrobić. W sumie pytałem o błąd w moim rozumowaniu. Ale podane przez Was rozwiązania są zrozumiałe i może nauczyciel się nie rzuci o to na mnie.

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