Ir ao conteúdo
  • Cadastre-se

C++ Escreva uma função em C para determinar se uma string de caracteres de entrada é


Assíria S

Posts recomendados

Escreva uma função em C para determinar se uma string de caracteres de entrada é da forma: xCy, onde x é uma string consistindo nas letras 'A' e 'B', e y é o inverso de x (isto é, se x = "ABABBA", y deve equivaler a "ABBABA"). Em cada ponto, você só poderá ler o próximo caractere da string. Dica: Use pilha.


O professor disse que está quase no jeito o código abaixo, mas preciso de ajuda:
 

#include 
#include 

typedef struct cel { 
char conteudo; 
struct cel *prox; 
} celula; 

void empilha(char c, celula *topo) { 
celula *nova; 
nova = malloc( sizeof (celula)); 
nova->conteudo = c; 
nova->prox = topo->prox; 
topo->prox = nova; 
} 

char desempilha(celula *topo) { 
char c; 
celula *pt; 
pt = topo->prox; 
c = pt->conteudo; 
topo->prox = pt->prox; 
free(pt); 
return c; 
} 

int verifica(char *str, celula *topo) { 
for (i=0; str != 'C'; i++) 
empilha(str, topo); 
for (i=0; str != '\0'; i++) 
if (desempilha(topo) != str) 
return 1; 
return (topo->prox == NULL); 
} 

int main() { 
char str[255]; 
int i; 
celula cabeca; 
celula *topo; 
topo = &cabeca; 
topo->prox = NULL; 
printf("Informe a string: "); 
gets(str); 
if (verifica(str, topo) == 0) 
printf("%s é da forma xCy\n", str); 
else 
printf("%s não é da forma xCy\n", str); 
return 0; 
}

 

Link para o comentário
Compartilhar em outros sites

Na função verificar, você deixou alguns erros passarem, como a falta de int i;

Também você está usando o 'str' errado, troque por '*str'  e incremente com '*str++' ao lado de i++

 

Aqui: 

//retorno incoerente
return (topo->prox == NULL); 

//verificação -> verdadeiro
return 0;

 

Link para o comentário
Compartilhar em outros sites

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...