Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h>
#define tamanho 5
//Estrutura da livro
struct tlivro {///////////////////////////////////////////////////
	 int codigo;////////////////////////////////////////////////
	 char nome[50];////////////////////////////////////
	 char autor[50];//////////////////////////////////
};

//Estrutura da Pilha
struct tpilha {////////////////////////////////////////
	 tlivros dados[tamanho]; ///////////////////////////////////////
	 int ini;
	 int fim;
};

//Variáveis globais
struct tpilha pilha;//////////////////////////////////////////
int op;

//Protipação
void pilha_entrar(); 
void pilha_sair(); 
void pilha_mostrar(); 
void menu_mostrar(); 

//Função principal
int main(){
	 setlocale(LC_ALL, "Portuguese");
	 op = 1; 
	  pilha.ini = 0; 
	   pilha.fim = 0; 
	    while (op != 0) { 
	    system("cls");
	     pilha_mostrar();
	      menu_mostrar();
	      scanf("%d", &op);
	       switch (op) {
	       	case 1:
	       		 pilha_entrar(); 
	       		  break;
	       		  case 2: 
	       		   pilha_sair(); 
	       		    break; 
	       		}
	       	}
	       	return(0); 
	       }
	       //Adicionar um elemento no final da Pilha 
	       void pilha_entrar(){
	       	if (pilha.fim == tamanho) { 
	       	printf("\nA pilha está cheia, impossível empilhar!\n\n"); 
	       	 system("pause"); 
	       	   } 
	       	    else {
	       	   	printf("\nDigite o codigo do livro: "); /////////////////////////////////////
	       	   	scanf("%d", &pilha.dados[pilha.fim].codigo); //////////////////////////////////////
	       	   	printf("\nDigite o nome do livro: "); /////////////////////////////////////
	       	   	scanf("%s", pilha.dados[pilha.fim].nome); //////////////////////////////////////
	       	   	printf("\nDigite o nome do autor: "); /////////////////////////////////////
	       	   	scanf("%s", pilha.dados[pilha.fim].autor); //////////////////////////////////////
	       	   	 pilha.fim++; 
	       	   }
	       }
	       //Retirar o último elemento da Pilha
	        void pilha_sair() {
	        	  if (pilha.ini == pilha.fim) { 
	        	      printf("\nA pilha está vazia, impossível desempilhar!\n\n"); 
	        	      system("pause");
	        	  }
	        	  else{
	        	  	pilha.dados[pilha.fim-1].codigo = 0;////////////////////////////////////////
	        	  	strcpy(pilha.dados[pilha.fim-1].nome, "");/////////////////////////////////
	        	  	strcpy(pilha.dados[pilha.fim-1].autor, "");//////////////////////////////
	        	  	pilha.fim--;
				  }
			}
			//Mostrar o conteúdo da Pilha
			void pilha_mostrar() {
				int i; 
				printf("[  ");
				for (i = 0; i < tamanho; i++) {
					printf("%d  ", pilha.dados[i].codigo);///////////////////////////
				}
				printf("]\n\n"); 
			}
			
			//Mostrar o menu de opções
			void menu_mostrar() {
				printf("\nEscolha uma opção:\n");
				printf("1 - Empilhar\n");
				printf("2 - Desempilhar\n");
				printf("0 - Sair\n\n");
			}
			

 

Postado

image.png.e09836cae8f690763dee708d9853a5bd.png

 

O problema começa aqui...

 

singular ou plural? decida: declarou tlivro e é uma struct então devia usar

   struct tlivro dados[tamanho];

pode parecer java mas eu prefiro declarar

#define tamanho 5
//Estrutura da livro
struct tlivro
{
	int codigo;
	char nome[50];
	char autor[50];
};
typedef struct tlivro Livro;

//Estrutura da Pilha
struct tpilha
{
	Livro dados[tamanho]; 
	int   ini;
	int   fim;
};
typedef struct tltpilha Pilha;

Pilha pilha;

int op;

//Protipação
void pilha_entrar();
void pilha_sair();
void pilha_mostrar();
void menu_mostrar();

Acho que pretendia escrever "prototipação" que é uma palavra estranha mesmo

 

Mais um palpite não solicitado: nunca use variáveis globais. São um pesadelo.

Outro: junte protótipos e as declarações das estruturas globais num header

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!