Ir ao conteúdo
  • Cadastre-se

#define que não funciona.


Adriano Casimiro

Posts recomendados

Boa tarde, andei pesquisando sobre pilha e me deparei com esse código:

#include <iostream>

#define tamanho 5

using namespace std;

//Estrutura Pilha

typedef struct{

int topo ;

int item [tamanho] ;

}PILHA;

//Inicializa a Pilha

void iniciaPilha (PILHA &p) {

p.topo = -1 ;

}

//Verifica se a pilha está vazia

bool pilhaVazia(PILHA p){

if(p.topo == -1 )

return true;

else

return false;

}

//Verifica se a pilha está cheia

bool pilhaCheia(PILHA p){

if (p.topo == tamanho-1)

return true;

else

return false;

}

//Insere elementos em pilha

void empilha(PILHA &p, int x){

p.item[++p.topo]=x;

}

int desempilha(PILHA &p){

return (p.item[p.topo--]) ;

}

int main(){

PILHA s ;

//criar a pilha

iniciaPilha (s);

//Verifica que a pilha está vazia

if(pilhaVazia(s))

cout<<"A pilha esta vazia."<<endl;

else

cout<<"A pilha nao esta vazia."<<endl;

//empilha elementos

empilha(s,10);

empilha(s,20);

empilha(s,30);

empilha(s,40);

empilha(s,50);

empilha(s,60);

//Verificar se a pilha está cheia

if(pilhaCheia(s))

cout<<"A pilha esta cheia."<<endl;

else

cout<<"A pilha nao esta cheia.\n"<<endl;

//desempilha e mostrar o elemento

cout<<"Item desempilhado: "<<desempilha(s)<<endl;

cout<<"Item desempilhado: "<<desempilha(s)<<endl;

//terminar

system("PAUSE");

return EXIT_SUCCESS;

}

O conceito de pilha eu entendi, o problema surgiu quando eu adicionei mais que 5 valores nela e continuou funcionando normalmente. Como o #define definiu a constante com o valor de 5, não era para dar problema na hora que ultrapassasse esse valor?

Desde já agradeço a ajuda!!!!!

Link para o comentário
Compartilhar em outros sites

Bom dia,

vamos examinar um pouco o código...

[b]#define tamanho 5 [/b]

Como você mesmo disse, aqui está definindo tamanho com o valor 5 certo?

Vamos para a estrutura então..


//Estrutura Pilha
typedef struct{

int topo ;

[b]int item [tamanho] ;[/b]

}PILHA;

Na parte onde está em negrito, ele colocou a variável item como um vetor com tamanho 5 (como definido mais acima)

Logo, o vetor de 5 elementos será a variável item e não a estrutura propriamente dita.

Da forma como está o código você está determinando simplesmente que o vetor de dentro da estrutura tem esse tamanho. Se quiser determinar o tamanho da estrutura coloque assim depois do código já feito acima:


PILHA pilha[tamanho];

Assim você estará determinando o tamanho da PILHA.

Espero ter ajudado,

Att

Link para o comentário
Compartilhar em outros sites

Arquivado

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

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!