Witam.
Mam za zadanie zrobić w C++ program szyfrujący. Szyfrowanie już zrobiłem tylko mam problem z deszyfrowaniem i na moje oko nie da się tego odszyfrować i nauczyciel musiał się pomylić, ale do rzeczy.
Szyfrowanie polega na tym:
Użytkownik wpisuje dowolny tekst np ,napis'. W programie jest baza znaków ,abcdefghijklmnoprstuwz123456789' i program sprawdza każdy znak w tekście wprowadzonym przez użytkownika np. ,n' jest na pozycji 13, ,a' na 0 itp. Następnie losowane są liczby np. 2,3,10,22. Te liczby dodawane są do pozycji tych znaków: n = 13 + 2 = 15, a= 0 + 3 = 3. Takie gotowe liczby służą do ułożenia szyfru np. 15 odpowiada znakowi "P" w bazie znaków a 3 opowiada ,d' i tak powstaje szyfr. Problem jest z odszyfrowywaniem... na moje oko jest możliwość odszyfrowania ale będzie potrzebny i szyfr i liczby które został wylosowane.
Np. po wpisaniu tego szyfru: p d i wylosowanych liczb: 2 , 3 program wykonuje taką czynność że sprawdza na której pozycji jest "P" w tym przypadku na 15 a ,d' na 3. Odejmuje 15 - 2 = 13, 3 - 3 = 0, i wszystko się zgadza 13 odpowiada ,n' a 0 odpowiada ,a'.
Kłopot w tym gdy wylosowane liczby po dodaniu do pozycji danych znaków będą większe niż 31 czyli więcej niż jest znaków w stringu ze znakami... Na początku gdy ta liczba była większa to program nie znajdywał danego znaku na tej pozycji i dawał jakiś dziwny znaczek w stylu serduszka itp. Rozwiązałem ten problem poszerzając
string = ,abcdefghijklmnoprstuwz123456789abcdefghijklmnoprstuwz123456789' o kilka razy. Ale to problemu nie rozwiązało gdyż później pojawiły się problemy z odszyfrowywaniem. Weźmy np. że znakowi
n = 15, wylosowano liczbę 30 co po dodaniu daje 45, ta liczba odpowiada znakowi ,,o'' w moim poszerzonym stringu. Jednak gdy przychodzi pora odszyfrowywania i zostaje wpisany znak i wylosowana liczba: o, 30. Program znak o wyczytuje na pozycji 14!!!! Gdyż bierze pierwszą pozycję a to już uniemożliwia prawidłowe odszyfrowanie, gdyż po odejmowaniu wynik będzie inny niż powinien.
Nie wiem czy ktoś dotrwał do końca, nie wiem czy ktoś zrozumiał to co napisałem, ale jeśli taka osoba się znajdzie to proszę o pomoc. Nie chcę gotowego rozwiązania... nie chcę by ktoś za mnie odwalił zadanie... chcę tylko jakąś małą rade bo ślęczę i myślę nad tym już kilka godzin i nie mogę nic wymyślić.
Etap szyfrowania udało mi się zrobić, jeśli by komuś był potrzebny kod do szyfrowania to mogę wkleić.
Z góry dziękuję za pomoc.