Ir ao conteúdo

Posts recomendados

Postado

Fala galera, estou com o seguinte problema para resolver, devo percorrer uma string em busca de algum caractere que não seja letra, número ou espaço, olhando a tabela ASCII, noto que serão essencialmente símbolos, assim que encontrar, devo colocá-lo entre colchetes ([ ]). Estou com dificuldades para resolver essa questão pois os métodos que estou pensando parecem complexos demais, e o problema parece simples. As ideias que tive são:

 

1 - Utilizar uma estrutura de dados como uma lista duplamente encadeada, mas acho matar uma formiga com bazuca usar isso

 

2 - Utilizar recursão e ir dividindo a string toda vez que encontrar um símbolo, encolchetá-lo e depois ir montando a string original novamente

 

3 - Apenas percorrer a string e tentar achar uma lógica para abrir espaço (não parece simples pois tem que abrir espaço na frente e atrás do símbolo né)

 

O que acham que pode ser mais adequado, atualmente estou tentando a terceira, já tentei a primeira mas achei que estava ficando complexo demais para o problema. Enfim, estou sem ideias.

Postado

Não sei se era essa sua dúvida, mas veja se o código abaixo ajuda:

#include <stdio.h>
#include <string.h>

int main () {
   char* texto = "abcde*fghij"; //tem um char estranho na 6a posiçao
   int n = 5; //posição do char estranho
   char temp[30];
   

   strncpy(temp, texto, n ); //copia a substring "abcde" para temp
   strcat(temp, "["); //adiciona '['
   strncat(temp, texto+n, 1); //adiciona o caractere estranho
   strcat(temp, "]"); //adiciona ] 
   strcat(temp, texto+n+1); //adiciona o resto da string
   printf("Inicio : %s\n", texto);
   printf("Resultado : %s", temp);
   
   return 0;
}

você pode transformar o código acima em uma função iterativa e executá-lo para cada ocorrência de caracteres diferentes.

Postado
1 hora atrás, rickfariasg4 disse:

1 - Utilizar uma estrutura de dados como uma lista duplamente encadeada, mas acho matar uma formiga com bazuca usar isso

 

2 - Utilizar recursão e ir dividindo a string toda vez que encontrar um símbolo, encolchetá-lo e depois ir montando a string original novamente

 

3 - Apenas percorrer a string e tentar achar uma lógica para abrir espaço (não parece simples pois tem que abrir espaço na frente e atrás do símbolo né)

 

Uma lista de letras não vai ajudar muito porque precisa de uma string na saída. Duplamente encadeada não faz diferença porque não vai voltar na lista. Esqueça [1]. Esse não é um processo recursivo, é só um loop. Claro, todo loop pode ser uma recursão, mas não vai melhorar o problema. Esqueça [2].  Resta apenas o simples [3] que é criar uma nova string a partir da original e mostrar na tela as duas...

 

Imagino que precisa de uma string na saída ou seu problema seria trivial (apenas mostrar na tela o resultado).

 

Em C o normal seria escrever uma função, algo como 

 

    char* nova(const char* original);

 

que retorne o resultado, e poderia testar simplesmente escrevendo
 

    char* original = ".. a .. 1 ..";
    char* saida = nova(saida);
    printf("\"%s\" ==> \"%s\"", original, saida);

 

É claro que cada símbolo original pode gerar 3 então se for usar um programa e declarar tudo estático a saída tem que ter o tamanho suficiente, no caso para x na entrada vai ter (3x -2) na saída... '@#$" vai gerar '[@][#][$]" por exemplo

 

Use um while e 2 ponteiros, um para a entrada e outro para a saída. E um if dentro do loop. Acho que é só isso.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!