Ir para conteúdo
Fórum Script Brasil
  • 0

Erro ao excluir elementos da pilha


Gobila

Pergunta

O meu problema é que presciso fazer uma pilha onde possa adicionar, remover e mostrar os elementos a parte de inserir e mostra eu conseguir mas não to conseguindo deixa a possição da fila vazia quando removo um elemento ele apenas repete o ultimo.

void retirar(){
     clrscr;
     cout<<"Retirar"<<endl;
     cout<<"Retirdo"<<pilha[9];
     cout<<endl;
     strcpy(pilha[9],pilha[8]);
     strcpy(pilha[8],pilha[7]);
     strcpy(pilha[7],pilha[6]);
     strcpy(pilha[6],pilha[5]);
     strcpy(pilha[5],pilha[4]);
     strcpy(pilha[4],pilha[3]);
     strcpy(pilha[3],pilha[2]);
     strcpy(pilha[2],pilha[1]);
     strcpy(pilha[1],pilha[0]);
     strcpy(pilha[0]==NULL;
To usando a função strcpy para passa um elemeto de uma possição pra outra mas quando chego na possição 0 ela deve fica vazia mas não sei como fazer já tentei usa NULL mas não deu certo abaixo o codigo completo desde já agradeço a atenção
#include <cstdlib>
#include <iostream>
#include <string.h>
#include <vector>
#include <conio.h>
#define clrscr system ("cls")

using namespace std;

int i;
int opcao= 1;
char pilha[10][100];

void mostrar (){
     clrscr;
     cout<<"Mostrar Pilha"<<endl;
     
     for (i=9;i>=0;i--){
         cout<<"[ "<<pilha[i]<<" ]"<<endl;
         }
         cout<<endl<<endl;
     }
     
void inserir(){
     clrscr;
     cout<<"Adicionar"<<endl;
     cout<<"Digite o Elemento"<<endl;
     
     for(i=0;i<10;i++){
                       cin>>pilha[i];
                       }
     }
     
void retirar(){
     clrscr;
     cout<<"Retirar"<<endl;
     cout<<"Retirdo"<<pilha[9];
     cout<<endl;
     
     
     strcpy(pilha[9],pilha[8]);
     strcpy(pilha[8],pilha[7]);
     strcpy(pilha[7],pilha[6]);
     strcpy(pilha[6],pilha[5]);
     strcpy(pilha[5],pilha[4]);
     strcpy(pilha[4],pilha[3]);
     strcpy(pilha[3],pilha[2]);
     strcpy(pilha[2],pilha[1]);
     strcpy(pilha[1],pilha[0]);
     strcpy(pilha[0]==NULL;
                               
     }
int main(int argc,char *argv[]){
    while(opcao != 0){
                cout<<"Escolha de opcao "<<endl;
                cout<<"[1] - Mostrar Fila"<<endl;
                cout<<"[2] - Inserir Elemento na Fila"<<endl;
                cout<<"[3] - Retirar Elemento da Fila"<<endl;
                cout<<"[0] - Sair"<<endl;
                cin>>opcao;
                if (opcao == 1){mostrar();}
                if (opcao == 2){inserir();}
                if (opcao == 3){retirar();}
                }
    system("pause");
    return EXIT_SUCCESS;
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

conseguir depois d ter passado muito tempo batendo cabeça e posta aqui eu tive uma ideia que resolveu o problema então agradeço o interece d quem quis ajudar

se alguém tive o mesmo problema no futuro aqui ta a resposta

Eu coloquei uma variavel com um vetor a mais

EX char pilha [10] ficou char pilha [11]

ai ta o codigo pra quem quiser ver

OBS: se for iserir novamente os elementos você ira iserir todos novamente assim substituindo os antigos(caso exista algum apos a exclução dos mesmos)

#include <cstdlib>
#include <iostream>
#include <string.h>
#include <vector>
#include <conio.h>
#define clrscr system ("cls")

using namespace std;

int i;
int opcao= 1;
char pilha[11][100];

void mostrar (){
     clrscr;
     cout<<"Mostrar Pilha"<<endl;
     
     for (i=9;i>=0;i--){
         cout<<"[ "<<pilha[i]<<" ]"<<endl;
         }
         cout<<endl<<endl;
     }
     
void inserir(){
     clrscr;
     cout<<"Adicionar"<<endl;
     cout<<"Digite o Elemento"<<endl;
     
     for(i=0;i<10;i++){
                       cin>>pilha[i];
                       }
     }
     
void retirar(){
     clrscr;
     cout<<"Retirar"<<endl;
     cout<<"Retirdo"<<pilha[9];
     cout<<endl;
     
     
     strcpy(pilha[9],pilha[8]);
     strcpy(pilha[8],pilha[7]);
     strcpy(pilha[7],pilha[6]);
     strcpy(pilha[6],pilha[5]);
     strcpy(pilha[5],pilha[4]);
     strcpy(pilha[4],pilha[3]);
     strcpy(pilha[3],pilha[2]);
     strcpy(pilha[2],pilha[1]);
     strcpy(pilha[1],pilha[0]);
     strcpy(pilha[0],pilha[11]);
                               
     }
int main(int argc,char *argv[]){
    while(opcao != 0){
                cout<<"Escolha de opcao "<<endl;
                cout<<"[1] - Mostrar Fila"<<endl;
                cout<<"[2] - Inserir Elemento na Fila"<<endl;
                cout<<"[3] - Retirar Elemento da Fila"<<endl;
                cout<<"[0] - Sair"<<endl;
                cin>>opcao;
                if (opcao == 1){mostrar();}
                if (opcao == 2){inserir();}
                if (opcao == 3){retirar();}
                }
    system("pause");
    return EXIT_SUCCESS;
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...