Ir ao conteúdo
  • Cadastre-se
Ferreira27

pilha em C para inverter a ordem das letras

Recommended Posts

alguém poderia me ajudar com esse algoritimo

Escreva um algoritmo em C que use uma pilha para inverter a ordem das letras de cada palavra de uma string. Por exemplo: dado o texto MUITO fácil a saída deve ser LICAF OTIUM

como usar o TAD Pilha e o TAD Lista.

Fiz assim mas ta fando erro

#include <stdio.h>

#include <stdlib.h>

typedef struct cel {

char conteudo;

struct cel *prox;

} celula;

void empilha(char c, celula *topo) {

celula *nova;

nova = mallocc( 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 main() {

char frase[50];

int i;

celula cabeca;

celula *topo;

topo = &cabeça;

topo->prox = NULL;

printf("Informe a frase: ");

gets(frase);

for (i=0; frase != '\0'; i++)

empilha(frase, topo);

printf("\nInvertida: ");

while (topo->prox != NULL)

putchar(desempilha(topo));

putchar('\n');

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado:

Observando seu código, seguem as correções....

alguém poderia me ajudar com esse algoritimo

Escreva um algoritmo em C que use uma pilha para inverter a ordem das letras de cada palavra de uma string. Por exemplo: dado o texto MUITO fácil a saída deve ser LICAF OTIUM

como usar o TAD Pilha e o TAD Lista.

Fiz assim mas ta fando erro

#include <stdio.h>

#include <stdlib.h>

#include <maloc.h>

typedef struct cel {

char conteudo;

struct cel *prox;

} celula;

void empilha(char c, celula *topo) {

celula *nova;

nova = malloc( sizeof (celula)); /* Aqui você escreveu maloc com 2 'c'*/

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 main() {

char frase[50];

int i;

celula cabeca;

celula *topo;

topo = &cabeca; /*Aqui você escreveu cabeça com 'ç' e o terminal não leu por ser um código ascii*/

topo->prox = NULL;

printf("Informe a frase: ");

gets(frase);

for (i=0; frase != '\0'; i++)

empilha(frase, topo);

printf("\nInvertida: ");

while (topo->prox != NULL)

putchar(desempilha(topo));

putchar('\n');

return 0;

}

Feitas estas alterações seu código ficou redondinho...

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×