ME AJUDEM NUM PROJETO PRA AMANHA, POR FAVOR [EDITADO] [RESOLVIDO]

1. ME AJUDEM NUM PROJETO PRA AMANHA, POR FAVOR [EDITADO] [RESOLVIDO]

Thales Fernandes
thalesFernandes

(usa Outra)

Enviado em 20/09/2017 - 18:35h

Boa noite companheiros, tenho um trabalho pra entregar amanha sobre alocação em pilha. Eu preciso acrescentar as funções:

Consultar Pilha: retornar o elemento sem remove-lo da pilha
Finalizar Pilha: liberar a memoria alocada na pilha

na linha de codigo a baixo, me ajudem por favor! Desde já, agradeço.

obs: a linha de codigo está compilando e executando sem erros

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

#define MAX 5
#define FALSE 0
#define TRUE 1

#define FIM 0
#define EMPILHAR 1
#define DESEMPILHAR 2
#define LISTAR 3

int obterOpcao(void)
{
int opcao;
printf("MENU\n");
printf("%2d - FIM\n", FIM);
printf("%2d - EMPILHAR\n", EMPILHAR);
printf("%2d - DESEMPILHAR\n", DESEMPILHAR);
printf("%2d - LISTAR conteudo na pilha\n", LISTAR);
printf("Opcao: ");
scanf("%d", &opcao);
putchar('\n');
return opcao;
}

int vazia(int proxTopo)
{
return proxTopo == 0;
}

int esgotada(int proxTopo)
{
return proxTopo == MAX;
}

int empilhar(int valor, int *pProxTopo, int pilha[])
{
if (esgotada(*pProxTopo)) return FALSE;
else
{
pilha[(*pProxTopo)++] = valor;
return TRUE;
}
}

int desempilhar(int *valor, int *pProxTopo, int pilha[])
{
if (vazia(*pProxTopo)) return FALSE;
else
{
*valor = pilha[--(*pProxTopo)];
return TRUE;
}
}

int listar(int proxTopo, int pilha[])
{
if (vazia(proxTopo)) return FALSE;
else
{
putchar('\n');
while (proxTopo > 0)
{
proxTopo--;
printf("%03d [%6d]\n", proxTopo, pilha[proxTopo]);
}
return TRUE;
}
}

int main(void)
{
int opcao, pilha[MAX], proxTopo = 0, valor;
while ((opcao = obterOpcao()) != FIM)
{
switch (opcao)
{
case EMPILHAR:
printf("INSIRA O VALOR: ");
scanf("%d", &valor);
if (empilhar(valor, &proxTopo, pilha))
printf("VALOR EMPILHADO\n\n");
else printf("Operacao frustrada - pilha esgotada...\n\n");
break;
case DESEMPILHAR:
if (desempilhar(&valor, &proxTopo, pilha))
printf("Valor %d desempilhado\n", valor);
else printf("Operacao frustrada - pilha vazia...\n\n");
break;
case LISTAR:
if (listar(proxTopo, pilha)) putchar('\n');
else printf("Operacao frustrada - pilha vazia...\n\n");
break;
}
}
return 0;
}



  


2. Re: ME AJUDEM NUM PROJETO PRA AMANHA, POR FAVOR [EDITADO] [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/09/2017 - 20:56h

qual sua dúvida?


3. Re: ME AJUDEM NUM PROJETO PRA AMANHA, POR FAVOR [EDITADO] [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 20/09/2017 - 21:32h

thalesFernandes escreveu:

Consultar Pilha: retornar o elemento sem remove-lo da pilha
Finalizar Pilha: liberar a memoria alocada na pilha


A primeira é fácil: você simplesmente tem de copiar o valor que está no topo da pilha.

A segunda fala em liberar memória. Isso dá a entender que você deveria ter alocado a memória primeiro, na hora de criar a pilha. No seu programa, você não usou alocação dinâmica, mas sim um array, que é alocado pelo próprio compilador, e que você, portanto, não tem como desalocar. Você provavelmente vai ter de reescrever seu programa usando alocação dinâmica.


4. Re: ME AJUDEM NUM PROJETO PRA AMANHA, POR FAVOR [EDITADO] [RESOLVIDO]

Thales Fernandes
thalesFernandes

(usa Outra)

Enviado em 20/09/2017 - 23:41h

Obrigado paulo, acho que entendi.

Piu, obrigado tbm, mas o paulo ja exclareceu as coisas aqui.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts