Informática, perguntado por lucas27484, 10 meses atrás

Há um certo tempo, quando esta matéria ainda era dada em C, uma questão bastante clássica sobre strings era separar uma string em palavras. Os espaços marcam a separação entre duas palavras, é claro. Por exemplo a string "atchim espirro banana maça" seria separada em "atchim", "espirro", "banana", "maça"

Talvez nesse momento você esteja pensando que se a questão for só isso é muito fácil, porque Python convenientemente oferece a função split() que faz esse trabalho para você? Poisé, C não tinha essa função, e o ponto da questão é exatamente implementá-la. Como Python já tem um split, você terá que implementar um que seja um pouquinho mais poderoso.

Entrada:
A entrada consiste em uma string s, composta por qualquer caractere exceto quebra de linha '\n'. As palavras são sequências de letras e elas estão separadas por qualquer caractere que não seja uma letra.

Os caracteres que separam palavras são diferentes entre si.

Cada palavra tem pelo menos 1 caractere.

Saída:
Imprima cada uma das palavras contidas em s, uma por linha.

Observações:
No primeiro exemplo de teste, a string é "atchim espirro#banana2maça". Temos 4 palavras. As duas primeiras estão separadas por espaço. As próximas duas por '#', e as últimas duas por '2'. Imprimimos uma por linha.

testes no anexo

Anexos:

Soluções para a tarefa

Respondido por talessilvaamarp9tcph
1

1 -

a = input("Digite a string que quer converter: ")

termos = "1234567890!@#$%-=[]{}´~`^;/:?|\'.,><&*()_+ "

b = ''

for i in a:

 if i in termos:

   print(b)

   b = ''

 else:

   b+=i

print(b)

O código vai percorrendo a string digitada vendo se há caracteres especiais.


lucas27484: blz mano, vou mandar solicitação depois para vc, vlw por se disponibilizar a mim ajudar
harissonmagalha: Q nada, tmj
lucas27484: blz mano
talessilvaamarp9tcph: editei o código
talessilvaamarp9tcph: python torradas.txt
Digite a string que quer converter: atchim espirro#banana2maça
atchim
espirro
banana
maça
talessilvaamarp9tcph: parece que o cara ai vai te ajudar
talessilvaamarp9tcph: boa sorte kk
lucas27484: vlw mano
lucas27484: vc tbm me ajudar muito
lucas27484: muito obrigado mano, vc é excelente
Respondido por PedroviskHMA
1

Olá! Eu até consegui fazer o algortimo, mas ele definitivamente não está completo. Teria que ter algumas verificações e mais algumas coisas para ele funcionar de maneira perfeita. E também, infelizmente, não consegui arrumar um jeito da função isalpha() suportar o UNICODE, então, qualquer caractere fora da lingua inglesa, não será impresso.

#include <stdio.h>

#include <ctype.h>

void split (const char *string) {

   int counter=0;

   int ini=0;

   while (string[counter] != '\0') {

       if (isalpha(string[counter])) {

           counter++;

       } else {

           for (int i=ini; i<counter; i++) {

               printf("%c", string[i]);

           }

           printf("\n");

           counter++;

           ini=counter;

       }

   }

   printf("%s\n", &string[ini]);

}

int main () {

   split("atchin espirro#banana-maca");

}

Apesar dos pesares, espero ter ajudado.

Nota: Dá para implementar a isalpha() na mão, fazendo uma verificação com os caracteres que você quiser.

Nota 2: Abaixo está o código com suporte aos símbolos da língua portuguesa. Implementei o isalpha() manualmente para isso.

#include <stdio.h>

int isalpha(char character){

   char simbols[]="1234567890!@#$%-=[]{}´~`^;/:?|\'.,><&*()_+ ";

   for(int i=0; i<=sizeof(simbols)-1; i++){

       if(character == simbols[i]){

           return 0;

       }

   }

   return 1;

}

void split (const char *string) {

   int counter=0;

   int ini=0;

   while (string[counter] != '\0') {

       if (isalpha(string[counter])) {

           counter++;

       } else {

           for (int i=ini; i<counter; i++) {

               printf("%c", string[i]);

           }

           printf("\n");

           counter++;

           ini=counter;

       }

   }

   printf("%s\n", &string[ini]);

}

int main () {

   split("atchin espirro#banana-maça");

}

Perguntas interessantes