Ir ao conteúdo
  • Cadastre-se

pilha em C para inverter a ordem das letras


Ferreira27

Posts recomendados

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;

}

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

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.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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