Mais um exercício da categoria Strings! O exercício "Um-Dois-Três" foi resolvido em C e C++. São duas soluções em C++ disponibilizadas para vocês. Contem nos comentários se as soluções de vocês forem diferentes!
Plataforma: URI (BEECROWD)
Problema: 1332
Enunciado:
Seu irmão mais novo aprendeu a escrever apenas um, dois e três, em Inglês. Ele escreveu muitas dessas palavras em um papel e a sua tarefa é reconhecê-las. Nota-se que o seu irmão mais novo é apenas uma criança, então ele pode fazer pequenos erros: para cada palavra, pode haver, no máximo, uma letra errada. O comprimento de palavra é sempre correto. É garantido que cada palavra que ele escreveu é em letras minúsculas, e cada palavra que ele escreveu tem uma interpretação única.
Linguagens: C e C++
Solução:
Código em C:
É necessário ler a palavra informada e verificar se está escrito "one", "two" ou "three". No entanto, as palavras estão escritas com algum erro. Assim, para verificar se a palavra seria three, basta analisar o tamanho da entrada, pois three é a única entrada com tamanho 5. Se não for, testo se as letras são, em ordem, "o", "n", "e", formando a palavra "one". Se duas ou mais letras forem diferentes, é sinal de que a palavra informada não seria "one", pois para ser deveria ter somente um erro. Então a resposta seria 2. Em caso contrário a resposta é 1, que já é o caso base aqui.
#include <stdio.h> int main() { int n; char *palavra = (char *) malloc(sizeof(char) * 5); scanf("%d ", &n); while (n--) { int erros = 0; int indice = 0; int resposta = 1; int tamanho = 0; scanf("%s", palavra); while (palavra[indice++] != '\0') tamanho++; if (tamanho == 5) resposta = 3; else { if (palavra[0] != 'o') erros++; if (palavra[1] != 'n') erros++; if (palavra[2] != 'e') erros++; if (erros >= 2) resposta = 2; } printf("%i\n", resposta); } return 0; }
Esta solução segue a mesma lógica da solução acima.
#include <iostream> #include <string> using namespace std; int main() { int n; cin >> n; while (n--) { int erros = 0; int indice = 0; int resposta = 1; int tamanho = 0; string palavra; cin >> palavra; while (palavra[indice++] != '\0') tamanho++; if (tamanho == 5) resposta = 3; else { if (palavra[0] != 'o') erros++; if (palavra[1] != 'n') erros++; if (palavra[2] != 'e') erros++; if (erros >= 2) resposta = 2; } cout << resposta << endl; } return 0; }
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 26 27 28 29 30 | #include <iostream> using namespace std; int main() { int n; cin >> n; while(n--){ string word; cin >> word; if(word.length() == 5){ cout << 3 << endl; } else{ int one = 0; int two = 0; if(word[0] == 'o') one++; if(word[1] == 'n') one++; if(word[2] == 'e') one++; if(word[0] == 't') two++; if(word[1] == 'w') two++; if(word[2] == 'o') two++; if(one > two) cout << 1 << endl; else cout << 2 << endl; } } return 0; } |