Ir ao conteúdo

C PILHA COM VETOR


Ir à solução Resolvido por Flávio Pedroza,

Posts recomendados

Postado

Olá, alguém pode me ajudar? Estou tentando implementar um conceito simples de pilha estática usando vetores, o código está compilando, mas com alguns problemas:

1- não ta removendo itens (pelo menos na hora de exibir depois que removo, continua tudo igual);

2- mesmo com um vetor [5] está permitindo inserir mais do que 5 elementos na pilha

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
  
  
    int pilha [5];
    int topo = 0;
    int op;
    int pop;

void insere(int *vetor){
    if (pilha == 5){
    printf("Pilha cheia/n");
    }else{
    printf("Digite o valor que quer incluir: ");
    scanf("%d", &pilha[topo]);
    topo++;
    }
}

int remover(){
    int aux;
    if (topo == 0){
    printf("Pilha vazia, não há o que excluir\n");
    }else{
    printf("Retirado o valor %d", pilha[topo-1]);
    topo--;
    return aux;
    }
}

void imprimir(int *vetor){
    int i;
    if (topo == 0){
    printf("Pilha vazia, não há o que imprimir\n");
    }else{
        for(i = 0; i < 5; i ++){
        printf("Pilha[%d]: %d\n", i, pilha[i]);
        }
    }
}

void main(){
    setlocale(LC_ALL,"portuguese");
    do{
        printf("\tImplementação de ED: Pilha\n");
        printf("Menu:\n");
        printf("\t1 - Exibir pilha na tela;\n");
        printf("\t2 - Incluir dado na pilha;\n");
        printf("\t3 - Excluir dado da pilha;\n");
        printf("\t4 - Sair");

        do{
		printf("\n\nQual a opção escolhida?\n");
        scanf("%d",&op);
        }while((op<1) || (op>4));

        if(op!=4){
            if(op == 1){
				imprimir(pilha);
			}else if(op==2){
				insere(pilha);
				printf("\nInserido com sucesso!\n");
            }else if(op == 3){
                remover();
                printf("\nRemovido com sucesso!\n");
            }

            if(op==1){
				op = 4; //para sair do loop
				printf("\nPrograma encerrado.\n");
			}
			else{
				//limpa a tela antes de exibir o menu novamente
				system("pause");
				system("cls");
			}
		}else{
			printf("\nPrograma encerrado.\n");
		}

    }while(op!= 4);

}

 

Postado
void insere(int *vetor){
    if (topo == 5){
    printf("Pilha cheia/n");
    }else{
    printf("Digite o valor que quer incluir: ");
    scanf("%d", &pilha[topo]);
    topo++;
    }
}

void imprimir(int *vetor){
    int i;
    if (topo == 0){
    printf("Pilha vazia, não há o que imprimir\n");
    }else{
        for(i = 0; i < topo; i ++){
        printf("Pilha[%d]: %d\n", i, pilha[i]);
        }
    }
}

Acredito que assim irá funcionar

  • Curtir 1
Postado
8 horas atrás, Flávio Pedroza disse:

void insere(int *vetor){
    if (topo == 5){
    printf("Pilha cheia/n");
    }else{
    printf("Digite o valor que quer incluir: ");
    scanf("%d", &pilha[topo]);
    topo++;
    }
}

void imprimir(int *vetor){
    int i;
    if (topo == 0){
    printf("Pilha vazia, não há o que imprimir\n");
    }else{
        for(i = 0; i < topo; i ++){
        printf("Pilha[%d]: %d\n", i, pilha[i]);
        }
    }
}

Acredito que assim irá funcionar

Obrigada cara, assim funcionou a parte de remover itens, na hora de exibir depois. 
Só não consegui arrumar e achar o erro disso: mesmo com um vetor [5] está permitindo inserir mais do que 5 elementos na pilha

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!