Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rebeca Araujo

implementando pilha

Recommended Posts

OI pessoal!

to fazendo esse programa aki...mas nao sei viu.........ta dando erro e eu nao to conseguindo arrumar

 

ele coloca dados a mais do que o MAX permitido...(do vetor)

 

se alguem puder ajudar....mto obrigada....UM BOM DIA!

 

beijos http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

o codigo:

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

const int MAX = 3;

//int topo;

 

typedef int pilha [MAX];

const int vazio=-1;

 

bool insere(pilha v, int & ndados, int dado){ // Passagem por referência no número de dados, pois,

if (ndados<MAX-1){

ndados++;

v[ndados] = dado;

return true;

} else

return false;

 

 

 

}

 

bool mostra(pilha v, int ndados) {

if (ndados > 0) {

for (int i = ndados; i >=0; i--) {

cout << i << ": " << v << endl;

}

return true;

} else {

return false;

}

}

 

bool removeTopo(pilha v, int & ndados, int dado) {

 

if (ndados <= 0) {

return false;

} else {

ndados--;

v[ndados]=dado;

return true;

}

}

int main(int argc, char *argv[])

{

pilha vetor;

int dado = vazio ; // quando a Pilha está VAZIA

int opcao, valor;

do{

system ("cls");

cout<< " 1) inserir " << endl;

cout <<" 2) mostrar " << endl;

cout <<" 3) remove do topo " << endl;

 

cout << "Opcao: "; cin >> opcao;

switch (opcao){

 

 

case 1:

cout << "Digite um valor: ";

cin >> valor;

if (!insere(vetor,dado,valor)) {

cout << "pilha cheia" << endl;

system("pause");

}

 

/* for (int i = 0; i < MAX; i++){

cout << "digite: ";

cin >> dado;

insere(vetor, i, dado);

if (!insere(vetor, i, dado))

cout << "Pilha Cheia!" << endl;

 

}*/

break;

 

case 2:

if (!mostra(vetor,dado)) {

cout << "pilha vazia" << endl;

 

}

system("pause");

break;

 

case 3:

if (!removeTopo(vetor,dado,valor)) {

cout << "Pilha Vazia" << endl;

system("pause");

}

else {

cout << "Valor removido: " << valor << endl;

system("pause");

}

break;

 

}

 

 

}while (opcao != 6);

 

system("PAUSE");

return EXIT_SUCCESS;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi isso:

 

int dado = vazio ; // quando a Pilha está VAZIA

 

porque voce não atribui 0 a uma váriavel inteira?

 

http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

o qrido.....eu ja tentei..... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

saco :mellow:

 

obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, parece que está funcionando, o que percebi foi:

ao retirar o topo da pilha é inseido o último valor na pilha.

Só tirei uma linha da função exclui topo, veja como fica:

 

bool removeTopo(pilha v, int & ndados, int dado) {

   if (ndados <= 0) {
	  return false;
   } else {
	  ndados--;
	  return true;
   } 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, parece que está funcionando, o que percebi foi:

ao retirar o topo da pilha é inseido o último valor na pilha.

Só tirei uma linha da função exclui topo, veja como fica:

 

bool removeTopo(pilha v, int & ndados, int dado) {

   if (ndados <= 0) {
	  return false;
   } else {
	  ndados--;
	  return true;
   } 
}

 

mas e se eu quiser mostrar o que eu estou apagando????

 

beijo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas,

mostra e depois apaga.

 

bool removeTopo(pilha v, int & ndados, int dado) {
   printf ("O dado %i sera apagado", dado);
   if (ndados <= 0) {
	  return false;
   } else {
	  ndados--;
	  return true;
   } 
}

ah, obrigado pelo beijo.

 

mas e se eu quiser mostrar o que eu estou apagando????

 

beijo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas,

mostra e depois apaga.

 

bool removeTopo(pilha v, int & ndados, int dado) {
   printf ("O dado %i sera apagado", dado);
   if (ndados <= 0) {
	  return false;
   } else {
	  ndados--;
	  return true;
   } 
}

ah, obrigado pelo beijo.

 

mas e se eu quiser mostrar o que eu estou apagando????

 

beijo

 

 

 

 

 

 

hauhauhauhauah costume de mandar beijo... :rolleyes:

 

 

ahuhauhua

 

 

vou tentar aki....despois te falo

 

obrigada

 

agora sem beijo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok!!!

 

 

olha, sem beijo não respondo mais. :rolleyes:

uhahuauhau

 

brincadeira.

 

hauhauhauhauah costume de mandar beijo...

 

 

ahuhauhua

 

 

vou tentar aki....despois te falo

 

obrigada

 

agora sem beijo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.