#include <stdio.h>
#include <stdlib.h>
void decode(char *msg, int shift) {
char *c;
// jedz po tablicy poki nie spotkasz nulla
for (c = msg; *c != '\0'; c++) {
int max, min;
int ascii = (int)*c;
// sprawdz czy maly czy duzy znak
if (ascii >= 97 && ascii <= 122) {
// male znaki
max = 123;
min = 97;
} else if (ascii >= 65 && ascii <= 90) {
// duze znaki
max = 91;
min = 65;
} else {
continue;
}
// zrob cezara
ascii += shift;
// jesli wypadamy poza range - modulo + min
if (ascii >= max) {
ascii = (ascii + min) % max;
}
// podmien
*c = ascii;
}
}
int main(void) {
char msg[20] = "Adam Jest ze";
int shift = 1;
decode(msg, shift);
printf("caesar by %d: %s",shift
, msg
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgZGVjb2RlKGNoYXIgKm1zZywgaW50IHNoaWZ0KSB7CgljaGFyICpjOwoJLy8gamVkeiBwbyB0YWJsaWN5IHBva2kgbmllIHNwb3RrYXN6IG51bGxhCglmb3IgKGMgPSBtc2c7ICpjICE9ICdcMCc7IGMrKykgewoJCWludCBtYXgsIG1pbjsKCQlpbnQgYXNjaWkgPSAoaW50KSpjOwoJCS8vIHNwcmF3ZHogY3p5IG1hbHkgY3p5IGR1enkgem5hawoJCWlmIChhc2NpaSA+PSA5NyAmJiBhc2NpaSA8PSAxMjIpIHsKCQkJLy8gbWFsZSB6bmFraQoJCQltYXggPSAxMjM7CgkJCW1pbiA9IDk3OwoJCX0gZWxzZSBpZiAoYXNjaWkgPj0gNjUgJiYgYXNjaWkgPD0gOTApIHsKCSAgICAJLy8gZHV6ZSB6bmFraQoJCQltYXggPSA5MTsKCQkJbWluID0gNjU7CgkJfSBlbHNlIHsKCQkJY29udGludWU7CgkJfQoJCS8vIHpyb2IgY2V6YXJhCgkJYXNjaWkgKz0gc2hpZnQ7CgkJLy8gamVzbGkgd3lwYWRhbXkgcG96YSByYW5nZSAtIG1vZHVsbyArIG1pbgoJCWlmIChhc2NpaSA+PSBtYXgpIHsKCQkJYXNjaWkgPSAoYXNjaWkgKyBtaW4pICUgbWF4OwoJCX0KCQkvLyBwb2RtaWVuCgkJKmMgPSBhc2NpaTsKCX0KfQoKaW50IG1haW4odm9pZCkgewoJY2hhciBtc2dbMjBdID0gIkFkYW0gSmVzdCB6ZSI7CglpbnQgc2hpZnQgPSAxOwoJcHJpbnRmKCJvcmlnIDogICAgICAgJXMgXG4iLCBtc2cpOwoJZGVjb2RlKG1zZywgc2hpZnQpOwoJcHJpbnRmKCJjYWVzYXIgYnkgJWQ6ICVzIixzaGlmdCwgbXNnKTsKCXJldHVybiAwOwp9Cg==