[c++]Zadanie Szyfr Cezara w SPOJ

Link tu: http://pl.spoj.pl/problems/JSZYCER/

Mam pewien problem napisałem ten program lecz w szyfrowanym tekście nie wypicuje mi spacji? Co jest źle?

KOD:

#include 

#include 


using namespace std;

    int il;

    int o = 0;


    int syfr (string tekst)

    {

        string noob = " ";


        if (tekst[o] > 87 && tekst[o]!= 32)

        {

            tekst[o] = tekst[o] - 23;

            cout << tekst[o];

            return 0;

        }

        if (tekst[o] == 0)

        {

            cout << " ";

            return 0;

        }

        if (tekst[o] < 87)

        {

        tekst[o] = tekst[o] + 3;

        cout << tekst[o];

        return 0;

        }


    }


int main ()

{

    string tekst;




    while(cin >> tekst)

    {

          il = tekst.size();

        while (il > o)

    {

        syfr (tekst);

        o++;

    }


     o = 0;

    }

}
  1. Popraw formatowanie

  2. Po stringu można iterować jak po tablicy używając tekst

3) Wykorzystując poprzednie, można zmienić funkcję syfr tak, żeby przyjmowała jako argument char.

4) Czy funkcja syfr zwraca coś istotnego? Jeżeli nie, to zmień int na void i zamień wszystkie “return 0;” na “return;”

5) Pojedyncze znaki można zapisywać jako np. ‘a’ (istotne jest użycie pojedynczych cudzysłowów). Przykład: ‘a’ - 97 == 0

a co do błędu to chyba to miejsce:

if (tekst[o] == 0)

        {

            cout << " ";

            return 0;

        }

spacja ma kod 32, nie 0

Wiem ale najpierw próbowałem z 32 i też nie działało

Błąd jest tu:

cin >> tekst // wczytuje jedno słowo w tekst nigdy nie będzie spacji.

zamien na:

getline

Zgadzam się z [alex].

Sprostowanie: std::getline, nie istream::getline