Archived
Работы по программированию
This commit is contained in:
Executable
+55
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user