Archived
56 lines
1.3 KiB
C
Executable File
56 lines
1.3 KiB
C
Executable File
/*
|
|
13.Написать программу, которая шифрует и дешифрует сообщение Шифром Цезаря.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#define OFFSET 13
|
|
|
|
|
|
char* encrypt(char* string) {
|
|
char *result = string;
|
|
|
|
for (int i =0; i < strlen(string);i++) {
|
|
char c = string[i];
|
|
if (c >= 'A' && c <= 'Z') {
|
|
c = c + (OFFSET % 26);
|
|
if (c > 'Z') c = 'A' + (c - 'Z') - 1;
|
|
}
|
|
if (c >= 'a' && c <= 'z') {
|
|
c = c + (OFFSET % 26);
|
|
if (c > 'z') c= 'a' + (c - 'z') - 1;
|
|
}
|
|
result[i] = c;
|
|
}
|
|
return result;
|
|
}
|
|
char* decrypt(char* string) {
|
|
char *result = string;
|
|
|
|
for (int i =0; i < strlen(string);i++) {
|
|
char c = string[i];
|
|
if (c >= 'A' && c <= 'Z') {
|
|
c = c - (OFFSET % 26);
|
|
if (c < 'A') c = 'Z' - ('A' - c) + 1;
|
|
}
|
|
if (c >= 'a' && c <= 'z') {
|
|
c = c - (OFFSET % 26);
|
|
if (c < 'a') c= 'z' - ('a' - c) + 1;
|
|
}
|
|
result[i] = c;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
int main() {
|
|
char string[32];
|
|
scanf("%s", string);
|
|
|
|
char *enc = encrypt(string);
|
|
printf("%s\n", enc);
|
|
|
|
printf("%s", decrypt(enc));
|
|
return 0;
|
|
}
|