Szyfr Cezara na kodach liter

Wskaźniki i napisy w tablicach char - Podstawy C++ (C++)

Szyfr Cezara przesuwa każdą literę o tyle samo miejsc w alfabecie: przy przesunięciu 3 a staje się d, a z wraca na początek jako c (reszta z dzielenia przez 26). Odszyfrowanie to przesunięcie o 26 - 3 = 23, czyli dalej w tę samą stronę aż do pełnego obrotu.

#include <iostream>
#include <cstring>
using namespace std;

// szyfr Cezara: kazda litera przesunieta o shift miejsc w alfabecie (26 liter)
void caesar(char *s, int shift) {
  for (int i = 0; s[i] != '\0'; i++) {
    if (s[i] >= 'a' && s[i] <= 'z') {
      s[i] = 'a' + (s[i] - 'a' + shift) % 26;
    } else if (s[i] >= 'A' && s[i] <= 'Z') {
      s[i] = 'A' + (s[i] - 'A' + shift) % 26;
    }
  }
}

int main() {
  char message[] = "Spotkanie o zmierzchu";
  caesar(message, 3);
  cout << message << endl;
  caesar(message, 26 - 3);
  cout << message << endl;
  return 0;
}

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Podstawy C++·Zaloguj się, aby zapisać postęp na koncie.