Rozwiązane

Jest to zadanie z informatyki. Poziom licealny. Da radę ktoś mi w tym pomóc, proszę. Będę mega wdzięczny


Szyfrowanie znaku

Zdefiniuj funkcję szyfruj_znak(char znak, int klucz), której para­metrami są odpowiednio dowolna mała litera alfabetu łacińskiego oraz liczba całkowita nieujemna mniejsza od 1000, a wynikiem jest zaszyfrowana danym kluczem litera. Sprawdź działanie funkcji dla podanych poniżej parametrów.


Wynikiem funkcji szyfruj_znak('a', 3), jest d.

Wynikiem funkcji szyfruj_znak('z', 7), jest g.



Odpowiedź :

char szyfruj_znak( char c, int i )

{

 //alfabet ma 26 znaków, jeżeli przesuniemy literę o 26, to tak naprawdę przesuwamy ją o 0, jeżeli o 27 to o 1, jeżeli o 28 to o 2 itd. Dlatego wykonujemy operację modulo, ponieważ nie ma sensu przesuwać literki o liczbę większą niż 25

 i = i % 26;

 //do aktualnej literki dodajemy przesunięcie

 c = c + i;

 // 'a' = 96, 'z' = 122, jeżeli po dodaniu otrzymamy znak większy od 122 (większy od z), to musimy odjąć 27 (ilość liczb w alfabecie), dzięki temu alfabet się "zapętli =" (a,b,c,...,x,y,z,a,b,c,...)

 if( c > 122 )

   c = c - 26;

 return c;

}

int main()

{

 char znak;

 int przesuniecie;

 cout << "podaj znak: ";

 cin >> znak;

 cout << "podaj przesuniecie: ";

 cin >> przesuniecie;

 cout << znak << "+" << przesuniecie << "=" << szyfruj_znak( znak, przesuniecie );

}

W razie pytań zachęcam do ich zadawania.