2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#define is_upper(c) ((c) >= 'A' && (c) <= 'Z')
#define is_lower(c) ((c) >= 'a' && (c) <= 'z')
char* cesar_code(int k, char* s);
char* cesar_decode(int k, char* s);
int main(void){
char s[] = "ABCDEF Hello World !!! END zero (XYZ)";
int k = 15;
printf("source str: %s\n", s);
printf("coder str: %s\n", cesar_code(k, s) );
printf("decode str: %s\n", cesar_decode(k, s) );
return 0;
}
//шифратор
char* cesar_code(int k, char* s){
int i;
char* t = s;
k %= 26;
if(k < 0)
k = -k;
for(; *s; ++s){
if(is_lower(*s)){
i = (*s - 'a' + k) % 26;
*s = 'a' + i;
} else if(is_upper(*s)){
i = (*s - 'A' + k) % 26;
*s = 'A' + i;
}
}
return t;
}
//дешифратор
char* cesar_decode(int k, char* s){
int i;
char* t = s;
k %= 26;
if(k < 0)
k = -k;
for(; *s; ++s){
if(is_lower(*s)){
i = *s - 'a' - k;
if(i < 0)
i += 26;
*s = 'a' + i;
} else if(is_upper(*s)){
i = *s - 'A' - k;
if(i < 0)
i += 26;
*s = 'A' + i;
}
}
return t;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#define is_upper(c) ((c) >= 'A' && (c) <= 'Z')
#define is_lower(c) ((c) >= 'a' && (c) <= 'z')
char* cesar_code(int k, char* s);
char* cesar_decode(int k, char* s);
int main(void){
char s[] = "ABCDEF Hello World !!! END zero (XYZ)";
int k = 15;
printf("source str: %s\n", s);
printf("coder str: %s\n", cesar_code(k, s) );
printf("decode str: %s\n", cesar_decode(k, s) );
return 0;
}
//шифратор
char* cesar_code(int k, char* s){
int i;
char* t = s;
k %= 26;
if(k < 0)
k = -k;
for(; *s; ++s){
if(is_lower(*s)){
i = (*s - 'a' + k) % 26;
*s = 'a' + i;
} else if(is_upper(*s)){
i = (*s - 'A' + k) % 26;
*s = 'A' + i;
}
}
return t;
}
//дешифратор
char* cesar_decode(int k, char* s){
int i;
char* t = s;
k %= 26;
if(k < 0)
k = -k;
for(; *s; ++s){
if(is_lower(*s)){
i = *s - 'a' - k;
if(i < 0)
i += 26;
*s = 'a' + i;
} else if(is_upper(*s)){
i = *s - 'A' - k;
if(i < 0)
i += 26;
*s = 'A' + i;
}
}
return t;
}