Novamente um post com três soluções! Esse é mais um exercício da categoria Strings, ou seja, de alguma forma é necessário manipular os conjuntos de caracteres para se obter o aceite no exercício. O título desse exercício é "Frase Completa". Vamos conferir como se resolve este exercício? Confere mais abaixo nesse post!
Plataforma: URI (BEECROWD)
Enunciado:
Seu professor de português não para de trazer coisas novas para a sala, e hoje não foi diferente. Existe uma cidade, segundo seu professor, onde as pessoas levam muito a sério a forma como elas se comunicam. Em especial, quando duas pessoas estão conversando, elas pensam muito nas frases antes de dizê-las, de forma a garantir que tal frase seja uma “frase completa”, ou talvez uma “frase quase completa”. Considerando o nosso alfabeto de 26 letras, uma frase é dita “completa” quando ela contém todas as letras do alfabeto contidas nela. De modo semelhante, uma frase é dita “quase completa” se ela não é completa, porém contém ao menos metade das letras do alfabeto contidas nela. Quando uma frase não é “completa” e nem “quase completa”, ela é dita “mal elaborada”. Seu professor lhe deu uma tarefa muito difícil: dadas várias frases trocadas entre vários habitantes da cidade citada, diga em qual das categorias acima a frase se encaixa.
Linguagens: C e C++
#include <stdio.h> #include <string.h> int main() { int n, total, i, j, tam, letras[26]; char frase[1010]; char alfabeto[27] = "abcdefghijklmnopqrstuvwxyz"; scanf("%d ", &n); while (n--) { fgets(frase, 1010, stdin); tam = strlen(frase); memset(letras, 0, sizeof(letras)); for (i = 0; i < tam; i++) for (j = 0; j < 26; j++) if (frase[i] == alfabeto[j]) letras[j] = 1; total = 0; for (i = 0; i < 26; i++) total += letras[i]; printf("frase "); if (total == 26) printf("completa\n"); else if (total > 12) printf("quase completa\n"); else printf("mal elaborada\n"); } return 0; }
#include <iostream> #include <cstring> using namespace std; int main() { int n, total, i, tam, letras[26]; string frase; string alfabeto = "abcdefghijklmnopqrstuvwxyz"; cin >> n; cin.ignore(); while (n--) { getline(cin, frase); tam = frase.size(); memset(letras, 0, sizeof(letras)); for (i = 0; i < 26; i++) if (frase.find(alfabeto[i]) < tam) letras[i] = 1; total = 0; for (i = 0; i < 26; i++) total += letras[i]; cout << "frase "; if (total == 26) cout << "completa" << endl; else if (total > 12) cout << "quase completa" << endl; else cout << "mal elaborada" << 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 31 32 33 | #include <iostream> #include <map> using namespace std; int main() { int n; int ocorrencias[30]; cin >> n; string line; getline(cin, line); for(int i=0;i<n;i++){ for(int j=0;j<=26;j++){ ocorrencias[j] = 0; } int letras_usadas = 0; getline(cin, line); for(int j=0;j<line.length();j++){ if(line[j]!= ' ' and line[j]!=','){ int letter = line[j]-'a'; if(ocorrencias[letter] == 0){ ocorrencias[letter] = 1; letras_usadas++; } } } if(letras_usadas==26) cout << "frase completa" << endl; else if(letras_usadas>=13) cout << "frase quase completa" << endl; else cout << "frase mal elaborada" << endl; } return 0; } |