Resolvi aqui o problema Mensagem Oculta. Trago aqui duas soluções em C++ e uma em C. Este é um problema da categoria strings do Beecrowd. Bora conferir as respostas?
Plataforma: URI (BEECROWD)
Problema: 1272
Enunciado:
Textos podem conter mensagens ocultas. Neste problema a mensagem oculta em um texto é composto pelas primeiras letras de cada palavra do texto, na ordem em que aparecem. É dado um texto composto apenas por letras minúsculas ou espaços. Pode haver mais de um espaço entre as palavras. O texto pode iniciar ou terminar em espaços, ou mesmo conter somente espaços.
Linguagens: C e C++
Solução:
Existem várias estratégias para este problema. Veja abaixo.
Código em C:
Aqui eu itero as palavras com strtok utilizando o espaço em branco como delimitador, assim preciso apenas imprimir o primeiro caractere da palavra enquanto ela for diferente de NULL.
#include <stdio.h> #include <string.h> int main() { int n; char linha[60]; const char delimitador[2] = " "; scanf("%i ", &n); while (n--) { scanf ("%[^\n]%*c", linha); char *termo; termo = strtok(linha, delimitador); while (termo != NULL) { printf("%c", termo[0]); termo = strtok(NULL, delimitador); } printf("\n"); } return 0; }
#include <iostream> #include <cctype> using namespace std; int main() { int n; string linha; cin >> n; cin.ignore(); while (n--) { getline(cin, linha); if (isalpha(linha[0])) cout << linha[0]; for (int i = 1; i < linha.size(); i++) { if (linha[i] != ' ') { while (linha[i] == ' ') i++; } if (isalpha(linha[i]) && linha[i-1] == ' ') cout << linha[i]; } cout << 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 | #include <iostream> using namespace std; int main() { string line; int n; cin >>n; getline(cin, line); while(n--){ string final_str = ""; getline(cin, line); bool last_space = true; for(int i=0; i<line.length();i++){ if(last_space==true and (line[i]>='a' and line[i]<='z')){ last_space = false; final_str += line[i]; } if(!(line[i]>='a' and line[i]<='z')){ last_space = true; } } cout << final_str << endl; } return 0; } |
Nenhum comentário:
Postar um comentário