Witam. W pliku mam w każdym wierszu: słowo, spacja i drugie słowo. np
ZAWISLAK EFBNXQFP
KRASZEWSKI XENFMRJFXV
WARDA OSJVS
Drugie słowo jest szyfrogramem pierwszego (kazda litera przesunieta o okreslona ilosc miejsc w tabeli ASCII)
W pliku niektore szyfrogramy sa niepoprawne, moje zadanie to znalezc te niepoprawne szyfrogramy i je wypisac.
Program sie kompiluje, jednak wypisuje wszystkie wyrazy z pliku zamiast tylko tych niepoprawnych.
Pracuje tylko na nr 65-90 ASCII (duze litery alfabetu ang)
Reszta w komentarzach
string wyraz, szyfr;
char litera_wyraz, litera_szyfr;
int numer_wyraz, numer_szyfr;
vector <int> tab;
int roznica;
while(plik3>>wyraz>>szyfr)
{
for(int i=0; i<wyraz.size()-1; i++)
{
litera_wyraz = wyraz[i];
litera_szyfr = szyfr[i];
numer_wyraz = int(litera_wyraz);
numer_szyfr = int(litera_szyfr);
roznica = numer_szyfr - numer_wyraz; //sprawdzam roznice miedzy nr ascii litery szyfru, a zwyklego wyrazu
if(roznica<0) roznica += 26; //jesli wieksza jest zwykla litera, to znaczy, ze szyfr sie zapetlil (np z 90 do 68), dodaje 26
tab.push_back(roznica);
}
for(int j=1; j<tab.size(); j++)
{
if(tab[j]=!tab[j-1])
{
cout<<wyraz; //jesli roznica z j wyrazu jest rozna niz z wyrazu j-1, to znaczy, ze niepoprawnie zaszyfrowano, wypisuje ten niepoprawny wyraz i koncze
break;
}
}
tab.clear();
cout<<endl;