#include <ctype.h>
#include <stdio.h>
char code
(char ch
,int key
) { return isalpha(ch
)?(isupper(ch
)?'A'+(ch
-'A'+key
)%26:'a'+(ch
-'a'+key
)%26):ch
; }
char *encode(char *str,int key)
{
char *p;
key%=26;
if(key<0) key+=26;
for(p=str;*p;++p) *p=code(*p,key);
return str;
}
char *decode(char *str,int key) { return encode(str,-key); }
int main()
{
int key;
char bufor[1000];
for(;;)
{
printf("podaj klucz i tekst: "); if(scanf("%d %999[^\n]s",&key
,bufor
)!=2) return 0; printf("input: \"%s\"\n",bufor
); printf("encode: \"%s\"\n",encode
(bufor
,key
)); printf("decode: \"%s\"\n",decode
(bufor
,key
)); }
}
I2luY2x1ZGUgPGN0eXBlLmg+CiNpbmNsdWRlIDxzdGRpby5oPgogCmNoYXIgY29kZShjaGFyIGNoLGludCBrZXkpIHsgcmV0dXJuIGlzYWxwaGEoY2gpPyhpc3VwcGVyKGNoKT8nQScrKGNoLSdBJytrZXkpJTI2OidhJysoY2gtJ2EnK2tleSklMjYpOmNoOyB9CiAKY2hhciAqZW5jb2RlKGNoYXIgKnN0cixpbnQga2V5KQogIHsKICAgY2hhciAqcDsKICAga2V5JT0yNjsKICAgaWYoa2V5PDApIGtleSs9MjY7CiAgIGZvcihwPXN0cjsqcDsrK3ApICpwPWNvZGUoKnAsa2V5KTsKICAgcmV0dXJuIHN0cjsKICB9CiAKY2hhciAqZGVjb2RlKGNoYXIgKnN0cixpbnQga2V5KSB7IHJldHVybiBlbmNvZGUoc3RyLC1rZXkpOyB9CiAKaW50IG1haW4oKQogIHsKICAgaW50IGtleTsKICAgY2hhciBidWZvclsxMDAwXTsKICAgZm9yKDs7KQogICAgIHsKICAgICAgcHJpbnRmKCJwb2RhaiBrbHVjeiBpIHRla3N0OiAiKTsKICAgICAgaWYoc2NhbmYoIiVkICU5OTlbXlxuXXMiLCZrZXksYnVmb3IpIT0yKSByZXR1cm4gMDsKICAgICAgcHJpbnRmKCJpbnB1dDogIFwiJXNcIlxuIixidWZvcik7CiAgICAgIHByaW50ZigiZW5jb2RlOiBcIiVzXCJcbiIsZW5jb2RlKGJ1Zm9yLGtleSkpOyAKICAgICAgcHJpbnRmKCJkZWNvZGU6IFwiJXNcIlxuIixkZWNvZGUoYnVmb3Isa2V5KSk7IAogICAgIH0gICAKICB9