Ir ao conteúdo
  • Cadastre-se

questão c!


Visitante

Posts recomendados

Questão adaptada do ENADE 2014

Uma estrutura de dados do tipo pilha pode ser usado em um algoritmo que permite imprimir uma palavra de forma invertida. Exemplo: FELICIDADE deve ser impresso como EDADICILEF.

Utilizando o algoritmo abaixo:

Em C, faça o que se pede nos seguintes itens a seguir:

a) desenvolva a rotina empilhar (push) que inclui um elemento na pilha.
b)desenvolva a rotina de desempilhar (pop) que retira um elemento da pilha.
c) complete o algoritmo que lê uma palavra e, usando a pilha, a imprime de forma invertida.

 

ccc.png

 

 

se puderem me explicar junto da resposta por que a mesma.

Link para o comentário
Compartilhar em outros sites

Olha, o código abaixo está um pouco diferente, mas acho que pode lhe ajudar a entender um pouco mais sobre pilhas, espero que realmente ajude

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

struct pilha
{
	
	int n; //	Indicador do topo da pilha
	char palavra[31]; //	Recebe palavra empilhada
	
}; //	Struct pilha, pala criação da palavra!

typedef struct pilha Pilha; // Definição de 'strcut pilha' como somente Pilha

void pilha_coloca(Pilha* p, char c) //	Pilha* p, para o endereço, fica melhor de entender e é efetivo
{
	
	//	Rotina de PUSH
	
	p->palavra[p->n] = c; //	O topo da pilha recebe o char passado como argumento
	p->n++; //	O topo da pilha é atualizado
	
}

char pilha_retira(Pilha* p)
{

	//	Rotina de POP
		
	char c; //	Char para retorno da função
	
	c = p->palavra[p->n-1]; //	O char 'c' recebe o char do topo da pilha
							//	que é n - 1
	p->n--; //	O topo da pilha é atualizado novamente, agora em decremento
	
	return c; //	Retorna o char desempilhado
	
}

int main(void)
{
	
	int i;
	char palavra[31];
	
	printf("\n\tDigite sua palavra: "); scanf(" %30s", palavra);
	
	int tamanho = strlen(palavra);
	
	Pilha nova; //	Cria uma nova pilha;
	nova.n = 0;	//	Inicializa o topo da pilha, como agora ela está vazia, o topo é 0
	
	for(i = 0; i < tamanho; i++) // FOR que manda char por char da palavra para serem empilhados
		pilha_coloca(&nova, palavra[i]);
	
	printf("\n\tPalavra de forma normal: %s\n", palavra);
	
	printf("\n\tPalavra invertida: ");
	for(i = 0; i < tamanho; i++) // FOR que desempilha a palavra, agora invertida, e imprime ao mesmo tempo
		printf("%c", pilha_retira(&nova));
	
	printf("\n");
	
	return 0;
	
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...