//gcc 5.4.0
#include <stdio.h>
#include <stdlib.h>
char * cifra_de_cesar_encode(char * str, int deslocamento)
{
int i = 0;
while ((int)str[i] != 0)
{
str[i] = (char)((int)str[i] + (deslocamento%26));
i++;
}
return str;
}
char * cifra_de_cesar_decode(char * str, int deslocamento)
{
int i = 0;
while ((int)str[i] != 0)
{
str[i] = (int)str[i] - (deslocamento%26);
i++;
}
return str;
}
char * cifra_monoalfabetica_encode(char * str, char * alfabeto_encode, char * alfabeto_decode)
{
int i = 0;
while ((int)str[i] != 0)
{
int k = 0;
while (str[i] != alfabeto_encode[k])
k++;
str[i] = alfabeto_decode[k];
i++;
}
return str;
}
char * cifra_monoalfabetica_decode(char * str, char * alfabeto_encode, char * alfabeto_decode)
{
int i = 0;
while ((int)str[i] != 0)
{
int k = 0;
while (str[i] != alfabeto_decode[k])
k++;
str[i] = alfabeto_encode[k];
i++;
}
return str;
}
int main(void)
{
char palavra[] = "bemvindosafurbnaoesquecadefazeroexercicioapresentadopeloprofessoremsaladeaula";
printf("Cifra de César:\n\n");
printf("%s", palavra);
const int CHAVE = 500;
cifra_de_cesar_encode(palavra, CHAVE);
printf("\n%s", palavra);
cifra_de_cesar_decode(palavra, CHAVE);
printf("\n%s", palavra);
printf("\n---------------\n");
printf("Cifra de Monoalfabética:\n\n");
const char alfabeto_encode[] = "qazwsxedcrfvtgbyhnujmikolp";
const char alfabeto_decode[] = "abcdefghijklmnopqrstuvwxyz";
cifra_monoalfabetica_encode(palavra, alfabeto_encode, alfabeto_decode);
printf("%s", palavra);
cifra_monoalfabetica_decode(palavra, alfabeto_encode, alfabeto_decode);
printf("\n%s", palavra);
return 0;
}
Ly9nY2MgNS40LjAKCiNpbmNsdWRlICA8c3RkaW8uaD4KI2luY2x1ZGUgIDxzdGRsaWIuaD4KCmNoYXIgKiBjaWZyYV9kZV9jZXNhcl9lbmNvZGUoY2hhciAqIHN0ciwgaW50IGRlc2xvY2FtZW50bykKewogICAgaW50IGkgPSAwOwogICAgCiAgICB3aGlsZSAoKGludClzdHJbaV0gIT0gMCkKICAgIHsKICAgICAgICBzdHJbaV0gPSAoY2hhcikoKGludClzdHJbaV0gKyAoZGVzbG9jYW1lbnRvJTI2KSk7CiAgICAgICAgaSsrOwogICAgfQogICAgcmV0dXJuIHN0cjsKfQoKY2hhciAqIGNpZnJhX2RlX2Nlc2FyX2RlY29kZShjaGFyICogc3RyLCBpbnQgZGVzbG9jYW1lbnRvKQp7CiAgICBpbnQgaSA9IDA7CiAgICAKICAgIHdoaWxlICgoaW50KXN0cltpXSAhPSAwKQogICAgewogICAgICAgIHN0cltpXSA9IChpbnQpc3RyW2ldIC0gKGRlc2xvY2FtZW50byUyNik7CiAgICAgICAgaSsrOwogICAgfQogICAgcmV0dXJuIHN0cjsKfQoKY2hhciAqIGNpZnJhX21vbm9hbGZhYmV0aWNhX2VuY29kZShjaGFyICogc3RyLCBjaGFyICogYWxmYWJldG9fZW5jb2RlLCBjaGFyICogYWxmYWJldG9fZGVjb2RlKQp7CiAgICBpbnQgaSA9IDA7CiAgICAKICAgIHdoaWxlICgoaW50KXN0cltpXSAhPSAwKQogICAgewogICAgICAgIGludCBrID0gMDsKICAgICAgICB3aGlsZSAoc3RyW2ldICE9IGFsZmFiZXRvX2VuY29kZVtrXSkKICAgICAgICAgICAgaysrOwogICAgICAgIHN0cltpXSA9IGFsZmFiZXRvX2RlY29kZVtrXTsKICAgICAgICBpKys7CiAgICB9CiAgICByZXR1cm4gc3RyOwp9CgpjaGFyICogY2lmcmFfbW9ub2FsZmFiZXRpY2FfZGVjb2RlKGNoYXIgKiBzdHIsIGNoYXIgKiBhbGZhYmV0b19lbmNvZGUsIGNoYXIgKiBhbGZhYmV0b19kZWNvZGUpCnsKICAgIGludCBpID0gMDsKICAgIAogICAgd2hpbGUgKChpbnQpc3RyW2ldICE9IDApCiAgICB7CiAgICAgICAgaW50IGsgPSAwOwogICAgICAgIHdoaWxlIChzdHJbaV0gIT0gYWxmYWJldG9fZGVjb2RlW2tdKQogICAgICAgICAgICBrKys7CiAgICAgICAgc3RyW2ldID0gYWxmYWJldG9fZW5jb2RlW2tdOwogICAgICAgIGkrKzsKICAgIH0KICAgIHJldHVybiBzdHI7Cn0KCmludCBtYWluKHZvaWQpCnsKICAgIGNoYXIgcGFsYXZyYVtdID0gImJlbXZpbmRvc2FmdXJibmFvZXNxdWVjYWRlZmF6ZXJvZXhlcmNpY2lvYXByZXNlbnRhZG9wZWxvcHJvZmVzc29yZW1zYWxhZGVhdWxhIjsgICAgCiAgICBwcmludGYoIkNpZnJhIGRlIEPDqXNhcjpcblxuIik7CiAgICBwcmludGYoIiVzIiwgcGFsYXZyYSk7CiAgICBjb25zdCBpbnQgQ0hBVkUgPSA1MDA7CiAgICBjaWZyYV9kZV9jZXNhcl9lbmNvZGUocGFsYXZyYSwgQ0hBVkUpOwogICAgcHJpbnRmKCJcbiVzIiwgcGFsYXZyYSk7CiAgICBjaWZyYV9kZV9jZXNhcl9kZWNvZGUocGFsYXZyYSwgQ0hBVkUpOwogICAgcHJpbnRmKCJcbiVzIiwgcGFsYXZyYSk7CiAgICBwcmludGYoIlxuLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgIHByaW50ZigiQ2lmcmEgZGUgTW9ub2FsZmFiw6l0aWNhOlxuXG4iKTsKICAgIGNvbnN0IGNoYXIgYWxmYWJldG9fZW5jb2RlW10gPSAicWF6d3N4ZWRjcmZ2dGdieWhudWptaWtvbHAiOwogICAgY29uc3QgY2hhciBhbGZhYmV0b19kZWNvZGVbXSA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CiAgICBjaWZyYV9tb25vYWxmYWJldGljYV9lbmNvZGUocGFsYXZyYSwgYWxmYWJldG9fZW5jb2RlLCBhbGZhYmV0b19kZWNvZGUpOwogICAgcHJpbnRmKCIlcyIsIHBhbGF2cmEpOwogICAgY2lmcmFfbW9ub2FsZmFiZXRpY2FfZGVjb2RlKHBhbGF2cmEsIGFsZmFiZXRvX2VuY29kZSwgYWxmYWJldG9fZGVjb2RlKTsKICAgIHByaW50ZigiXG4lcyIsIHBhbGF2cmEpOwogICAgcmV0dXJuIDA7Cn0K
prog.cpp: In function ‘int main()’:
prog.cpp:74:74: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
cifra_monoalfabetica_encode(palavra, alfabeto_encode, alfabeto_decode);
^
prog.cpp:30:8: note: initializing argument 2 of ‘char* cifra_monoalfabetica_encode(char*, char*, char*)’
char * cifra_monoalfabetica_encode(char * str, char * alfabeto_encode, char * alfabeto_decode)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
prog.cpp:74:74: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
cifra_monoalfabetica_encode(palavra, alfabeto_encode, alfabeto_decode);
^
prog.cpp:30:8: note: initializing argument 3 of ‘char* cifra_monoalfabetica_encode(char*, char*, char*)’
char * cifra_monoalfabetica_encode(char * str, char * alfabeto_encode, char * alfabeto_decode)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
prog.cpp:76:74: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
cifra_monoalfabetica_decode(palavra, alfabeto_encode, alfabeto_decode);
^
prog.cpp:45:8: note: initializing argument 2 of ‘char* cifra_monoalfabetica_decode(char*, char*, char*)’
char * cifra_monoalfabetica_decode(char * str, char * alfabeto_encode, char * alfabeto_decode)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
prog.cpp:76:74: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
cifra_monoalfabetica_decode(palavra, alfabeto_encode, alfabeto_decode);
^
prog.cpp:45:8: note: initializing argument 3 of ‘char* cifra_monoalfabetica_decode(char*, char*, char*)’
char * cifra_monoalfabetica_decode(char * str, char * alfabeto_encode, char * alfabeto_decode)
^~~~~~~~~~~~~~~~~~~~~~~~~~~