Dzień dobry, sprawdźmy błędy:
Ogólnie chyba wszystko oprócz tego jest dobrze:
while(getline(plik,linia))
{
plik>>zaszyfrowane;
cout<<char(zaszyfrowane-528);
nr_linii++;
}
Przeanalizujmy razem dlaczego:
odczytuje Pan całą linię z pliku, wskaźnik na pozycję w pliku przesuwa się na koniec linii, potem wewnątrz pętli pobiera Pan 1 liczbę całkowitą (4 bajty), odejmuje 528 potem wypisuje ją na ekran, proszę zauważyć, że ta pierwsza pobrana linia zostaje pominięta, ponieważ została już pobrana z pliku, wskaźnik się przesunął, teraz się to zapętla i znowu,
odczytuje Pan od tej pobranej liczby do końca linii, potem pobiera 1 liczbę i tak w kółko,
przykład co się tu dzieje:
PLIK: szyfr.txt
123414 41231 4124 (pobrane przez getline, nie przeprocesowane)
5990 1234512 235 52 (na niebiesko pobrane i przeprocesowane potem pobrane przez getline, nie przeprocesowane)
3430 124224354252
Wydaje mi się że tak chciał Pan to zrobić:
while(plik>>zaszyfrowane)
{
cout<<char(zaszyfrowane-528);
nr_linii++;
}