Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ - przesuwanie cyklicznie o 13

Ostatnio zmodyfikowano 2014-01-08 21:25
Autor Wiadomość
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.
C/C++
#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")
P-101578
pekfos
» 2014-01-08 21:25:15
Sprawdzaj eof() po get().
P-101642
« 1 »
  Strona 1 z 1