Fala, pessoal! Aqui foi resolvido o problema "Carta de Natal Criptografada", em C e C++. Dessa vez postei duas soluções diferentes de C++, ambas são aceitas pela plataforma. Vejam abaixo!
Plataforma: URI (BEECROWD)
Problema: 3038
Linguagens: C e C++
Solução:
Código em C:
Nesta solução o texto foi armazenado na variável frase, um array de char, e cada letra foi obtida procurando os caracteres especiais. Para cada caso, imprimia-se a vogal correspondente e, caso não houvesse um dos caracteres, imprimia o caractere original. Ao final é necessário quebrar a linha com \n.
#include <stdio.h> #include <string.h> int main() { char frase[260], letra; int i; while (fgets(frase, 260, stdin) != NULL) { for (i = 0; i < strlen(frase); i++) { letra = frase[i]; if (letra == '@') printf("a"); else if (letra == '&') printf("e"); else if (letra == '!') printf("i"); else if (letra == '*') printf("o"); else if (letra == '#') printf("u"); else printf("%c", letra); } } printf("\n"); return 0; }
Código em C++:
Nessa solução as linhas são percorridas procurando por ocorrências de @, &, !, * ou #, subsituindo eles pela respectiva letra.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <iostream> using namespace std; int main() { std::string line; while (std::getline(std::cin, line)) { for(int i=0;i<line.length();i++){ switch(line[i]){ case '@':line[i]='a'; break; case '&':line[i]='e'; break; case '!':line[i]='i'; break; case '*':line[i]='o'; break; case '#':line[i]='u'; break; default: break; } } std::cout << line << std::endl; } return 0; } |
Código em C++:
Essa solução é um pouco diferente. A string tem seu tamanho obtido com o método size(), e não com o método length(). Em vez de utilizar switch, foi utilizada a estrutura if. Além disso, no switch uma string line estava recebendo os respectivos caracteres. Nesta solução o caractere é impresso, sem a necessidade de armazená-lo.
#include <iostream> using namespace std; int main() { string frase; char letra; while (getline(cin, frase)) { for (int i = 0; i < frase.size(); i++) { letra = frase[i]; if (letra == '@') cout << 'a'; else if (letra == '&') cout << 'e'; else if (letra == '!') cout << 'i'; else if (letra == '*') cout << 'o'; else if (letra == '#') cout << 'u'; else cout << letra; } cout << endl; } return 0; }
Nenhum comentário:
Postar um comentário