Uzupełnij podaną funkcję konwertuj tak, aby zwracała ona tekst jawny dla zadanego, zaszyfrowanego szyfrem Playfair ciągu znaków oraz odpowiadającego mu klucza. Do stworzenia kwadratu szyfrującego wykorzystaj gotową funkcję przetwarzajKlucz.
Specyfikacja:
Dane:
wiadomosc — zaszyfrowane szyfrem Playfair słowo przekazane do procesu odszyfrowywania; ciąg parzystej liczby znaków składający się z wielkich liter alfabetu angielskiego.
klucz — klucz wykorzystywany w procesie odszyfrowywania; ciąg znaków składający się z liter alfabetu angielskiego.
Wynik:
jawny — odszyfrowane słowo; ciąg znaków składający się z wielkich liter alfabetu angielskiego
Działanie swojego programu przetestuj dla szyfrogramu „BRDOWJZTKWMP” oraz klucza „wskaznik”.
R1CnLLk1FNdi1
Przykładowe rozwiązanie zadania:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 2. kratka include otwórz nawias ostrokątny string zamknij nawias ostrokątny.
Linia 4. using namespace std średnik.
Linia 6. string konwertuj otwórz nawias okrągły string wiadomosc przecinek const string klucz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. for otwórz nawias okrągły unsigned int i znak równości 0 średnik i otwórz nawias ostrokątny wiadomosc kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. int wiersz otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy.
Linia 9. klucz kropka find otwórz nawias okrągły wiadomosc otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły prawy ukośnik 5 przecinek.
Linia 10. klucz kropka find otwórz nawias okrągły wiadomosc otwórz nawias kwadratowy i plus 1 zamknij nawias kwadratowy zamknij nawias okrągły prawy ukośnik 5.
Linia 11. zamknij nawias klamrowy średnik.
Linia 12. int kolumna otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy.
Linia 13. klucz kropka find otwórz nawias okrągły wiadomosc otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły procent 5 przecinek.
Linia 14. klucz kropka find otwórz nawias okrągły wiadomosc otwórz nawias kwadratowy i plus 1 zamknij nawias kwadratowy zamknij nawias okrągły procent 5.
Linia 15. zamknij nawias klamrowy średnik.
Linia 17. if otwórz nawias okrągły kolumna otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości znak równości kolumna otwórz nawias kwadratowy 1 zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. wiadomosc otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości klucz otwórz nawias kwadratowy otwórz nawias okrągły otwórz nawias okrągły otwórz nawias okrągły wiersz otwórz nawias kwadratowy 0 zamknij nawias kwadratowy minus 1 zamknij nawias okrągły plus 5 zamknij nawias okrągły procent 5 zamknij nawias okrągły asterysk 5 plus kolumna otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias kwadratowy średnik.
Linia 19. wiadomosc otwórz nawias kwadratowy i plus 1 zamknij nawias kwadratowy znak równości klucz otwórz nawias kwadratowy otwórz nawias okrągły otwórz nawias okrągły otwórz nawias okrągły wiersz otwórz nawias kwadratowy 1 zamknij nawias kwadratowy minus 1 zamknij nawias okrągły plus 5 zamknij nawias okrągły procent 5 zamknij nawias okrągły asterysk 5 plus kolumna otwórz nawias kwadratowy 1 zamknij nawias kwadratowy zamknij nawias kwadratowy średnik.
Linia 20. zamknij nawias klamrowy.
Linia 21. else if otwórz nawias okrągły wiersz otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości znak równości wiersz otwórz nawias kwadratowy 1 zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 22. wiadomosc otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości klucz otwórz nawias kwadratowy wiersz otwórz nawias kwadratowy 0 zamknij nawias kwadratowy asterysk 5 plus otwórz nawias okrągły otwórz nawias okrągły kolumna otwórz nawias kwadratowy 0 zamknij nawias kwadratowy minus 1 zamknij nawias okrągły plus 5 zamknij nawias okrągły procent 5 zamknij nawias kwadratowy średnik.
Linia 23. wiadomosc otwórz nawias kwadratowy i plus 1 zamknij nawias kwadratowy znak równości klucz otwórz nawias kwadratowy wiersz otwórz nawias kwadratowy 1 zamknij nawias kwadratowy asterysk 5 plus otwórz nawias okrągły otwórz nawias okrągły kolumna otwórz nawias kwadratowy 1 zamknij nawias kwadratowy minus 1 zamknij nawias okrągły plus 5 zamknij nawias okrągły procent 5 zamknij nawias kwadratowy średnik.
Linia 24. zamknij nawias klamrowy.
Linia 25. else otwórz nawias klamrowy.
Linia 26. wiadomosc otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości klucz otwórz nawias kwadratowy wiersz otwórz nawias kwadratowy 0 zamknij nawias kwadratowy asterysk 5 plus kolumna otwórz nawias kwadratowy 1 zamknij nawias kwadratowy zamknij nawias kwadratowy średnik.
Linia 27. wiadomosc otwórz nawias kwadratowy i plus 1 zamknij nawias kwadratowy znak równości klucz otwórz nawias kwadratowy wiersz otwórz nawias kwadratowy 1 zamknij nawias kwadratowy asterysk 5 plus kolumna otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias kwadratowy średnik.
Linia 28. zamknij nawias klamrowy.
Linia 29. zamknij nawias klamrowy.
Linia 30. return wiadomosc średnik.
Linia 31. zamknij nawias klamrowy.
Linia 33. string przetwarzajKlucz otwórz nawias okrągły string klucz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 34. string alphabet średnik.
Linia 35. for otwórz nawias okrągły char i znak równości apostrof A apostrof średnik i otwórz nawias ostrokątny znak równości apostrof Z apostrof średnik i plus plus zamknij nawias okrągły.
Linia 36. if otwórz nawias okrągły i wykrzyknik znak równości apostrof Q apostrof zamknij nawias okrągły.
Linia 37. alphabet plus znak równości i średnik.
Linia 38. for otwórz nawias okrągły auto ampersant x dwukropek klucz zamknij nawias okrągły.
Linia 39. x znak równości toupper otwórz nawias okrągły x zamknij nawias okrągły średnik.
Linia 40. string przetwarzajKlucz średnik.
Linia 41. for otwórz nawias okrągły auto x dwukropek klucz zamknij nawias okrągły.
Linia 42. if otwórz nawias okrągły alphabet kropka find otwórz nawias okrągły x zamknij nawias okrągły wykrzyknik znak równości string dwukropek dwukropek npos ampersant ampersant przetwarzajKlucz kropka find otwórz nawias okrągły x zamknij nawias okrągły znak równości znak równości string dwukropek dwukropek npos zamknij nawias okrągły.
Linia 43. przetwarzajKlucz plus znak równości x średnik.
Linia 44. for otwórz nawias okrągły auto x dwukropek alphabet zamknij nawias okrągły.
Linia 45. if otwórz nawias okrągły przetwarzajKlucz kropka find otwórz nawias okrągły x zamknij nawias okrągły znak równości znak równości string dwukropek dwukropek npos zamknij nawias okrągły.
Linia 46. przetwarzajKlucz plus znak równości x średnik.
Linia 47. return przetwarzajKlucz średnik.
Linia 48. zamknij nawias klamrowy.
Linia 50. int main otwórz nawias okrągły zamknij nawias okrągły.
Linia 51. otwórz nawias klamrowy.
Linia 52. string jawny znak równości konwertuj otwórz nawias okrągły cudzysłów BRDOWJZTKWMP cudzysłów przecinek przetwarzajKlucz otwórz nawias okrągły cudzysłów wskaznik cudzysłów zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 53. cout otwórz nawias ostrokątny otwórz nawias ostrokątny jawny otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 54. return 0 średnik.
Linia 55. zamknij nawias klamrowy.