C++ - przesuwanie cyklicznie o 13
Ostatnio zmodyfikowano 2014-01-08 21:25
pomozcie Temat założony przez niniejszego użytkownika |
C++ - przesuwanie cyklicznie o 13 » 2014-01-08 13:08:13 Witam, mój problem polega na tym, że program działa wszystko fajnie do pewnego momentu, w pliku wyjściowym, przy jakichkolwiek danych drukuje zawsze o jeden znak więcej przykładowo dla "abcd" wydrukuje mi 5 znaków ten ostatni nie wiem skąd się bierze, "nopqd" dostaję właśnie coś takiego. Program ma na celu przesunąć o 13 każdy znak w ciągu znaków. Skąd się bierze ten ostatni znak i jak temu zaradzić? Dzięki za pomoc. #include <iostream> #include <fstream> using namespace std;
int main() { char x; string sciezka; fstream plik, plik2; cout << "Podaj sciezke:" << endl; cin >> sciezka; plik.open( sciezka.c_str(), ios::in ); sciezka = sciezka + ".txt"; plik2.open( sciezka.c_str(), ios::out ); while( plik.good() ) { plik.get( x ); if( x >= 'A' && x <= 'z' ) { for( int y = 13; y > 0; y-- ) { if( x == 'Z' ) { x = 'A'; x = x - 1; } if( x == 'z' ) { x = 'a'; x = x - 1; } x = x + 1; if( y == 1 ) { plik2 << x; } } } else plik2 << x; } plik2.close(); plik.close(); return 0; } Wejście: abcd Wyjście: nopqd (powinno być "nopq") |
|
pekfos |
» 2014-01-08 21:25:15 Sprawdzaj eof() po get(). |
|
« 1 » |