Informática, perguntado por lucas27484, 5 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