Jump to content
Fórum Script Brasil
  • 0

Erro ao excluir elementos da pilha


Gobila

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...