Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Adriano Casimiro

#define que não funciona.

Recommended Posts

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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×