Papagaio Poliglota é mais um problema easy do BEECROWD! Ele foi categorizado como um problema de iniciante. De fato é bem simples de resolver. Na sequência do post estão as respostas nas duas linguagens que mais costumo postar.
Plataforma: URI (BEECROWD)
Problema: 2850
Linguagens: C e C++
Solução:
A ideia aqui é ler uma palavra e verificar se é "esquerda", "direita", "nenhuma" ou "as duas" para fornecer uma resposta diferente em cada caso. Por questões de simplicidade (e preguiça), assumi que o usuário sempre informará uma dessas respostas e consigo notar que todas elas têm algo mais simples que as diferencia: a letra inicial. Então em vez de comparar se o texto é "esquerda", por exemplo, eu acabo pegando só o caractere inicial e comparando se é 'e'. Assim não percorro todo texto e, consequentemente, consigo um algoritmo mais rápido. É possível resolver comparando todo texto, inclusive é a solução mais correta, mas assumindo aqui que somente aquelas quatro entradas serão informadas, o programa funciona perfeitamente. Utilizei switch case para escolher o caractere inicial e criei cada caso comparando a letra inicial. O caso "as duas" seria representado por case 'a', mas não foi necessário pois eu acrescentei esta opção direto na cláusula default.
Código em C:
Utilizei ponteiro de char (*palavra) para alocar caracteres, li a palavra até encontrar o \n e selecionei palavra[0], ou seja, a letra presente na primeira posição da palavra, para verificar se ela é 'e', 'd', 'n' ou caso contrário ('a') para imprimir a respectiva mensagem.
#include <stdio.h> int main() { char *palavra = (char *) malloc(sizeof(char) * 8); while (scanf(" %[^\n]", palavra) != EOF) { switch(palavra[0]) { case 'e': printf("ingles\n"); break; case 'd': printf("frances\n"); break; case 'n': printf("portugues\n"); break; default: printf("caiu\n"); break; } } return 0; }
Código em C++:
Mesma coisa do código acima mas usando string em vez de char *palavra com malloc. e lendo com getline.
Não esqueça das quebras de linha!!!!
#include <iostream> int main() { std::string palavra; while (getline(std::cin, palavra)) { switch(palavra[0]) { case 'e': std::cout << "ingles" << std::endl; break; case 'd': std::cout << "frances" << std::endl; break; case 'n': std::cout << "portugues" << std::endl; break; default: std::cout << "caiu" << std::endl; break; } } return 0; }
Nenhum comentário:
Postar um comentário