[C++] Szyfr cezara – ulepszony!

Jest takie zadanie ze strony spoj.pl , które wymaga od nas zakodzenia programu który będzie szyfrował tekst konkretnym szyfrem – Szyfr cezara.

Polega on na zamianie liter o 3, czyli a=c  itd.
Program poniżej , jest bardziej uniwersalny nie tylko szyfruje – szyfrem cezara ale także innymi szyframi które mu zadamy. Możemy sami ustawić przesunięcie , w szyfrze cezara = 3, w naszym szyfrze może być to 4 ..

Jest zrobiony na tablicy liter ASCII, ponieważ każda litera jest zaprezentowana w ów kodzie zadanie można dość prosto rozwiązać.

#include
using namespace std;

void szyfruj(char tekst[], int klucz)
{
     int i = 0;
     klucz = klucz%26; // reszta z dzielenia wartosci wpisanego klucza(przesuniecie znaku o całkowitą wielokrotność liczby 26)..
     while(tekst[i]!='\0')
     {
                   if((int)tekst[i]>122-klucz) // ograniczenie aby nie wyjść poza zakres alfabetu
                   tekst[i]=(char)((int)tekst[i]+klucz-26);
                   else
                   tekst[i] =(char)((int)tekst[i]+klucz);
                   i++;
                   }
                   }
void deszyfruj(char tekst[], int klucz)
{
     int i = 0;
     klucz = klucz%26;
     while (tekst[i]!='\0')
     {
           if((int)tekst[i]-klucz<97)
           tekst[i] = (char)((int)tekst[i]-klucz);
           else
           tekst[i]=(char)((int)tekst[i]-klucz);
           i++;
           }
           }
int main() {
    char a[50];
    int klucz;
    cout<<"Podaj klucz(dla szyfru CEZARA WPISZ 3 )";
    cin>>klucz;
    cout<<"Tekst do zaszyfrowania:";
    cin>>a;
    cout<<"Tekst zaszyfrowany";
    szyfruj(a,klucz);
    cout<

* Wszystko działa poprawnie, jednak polecam przetestować.
Nie jest to mój kod, lecz kod z książki - jednak bardzo się przydał do zrozumienia tematu.

Komentarze

  1. Tak, gdzie używasz „i++”, użyj „++i”, dlatego bo nie używasz zwracanej wartości, a tak działa szybciej, może tego nie widać dla typów prostych ale dla dużych obiektów to może być problem. Gdzie używasz, „using namespace”, użyj „using”, wtedy nie będziesz wrzucał do tablicy eksportu nie potrzebnych obiektów itp lub po prostu przed, stawiaj std. Tak ogólnie fajny programik ;p

Dodaj komentarz