Ir para conteúdo

Arquivado

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

dsucuri

Pilhas em C

Recommended Posts

Alguém poderia me ajudar com esse código??? naum consigo compilá-lo..

 

#include <conio.h>#include <conio2.h>#include <iostream>#include <malloc.h>#include <stdio.h>#include <stdlib.h>int const M = 10;int I = 0;char ch, resp;typedef struct medico{	   char CRM;	   char nome;	   char esp;	   float preco;}medico;	   typedef struct pilha{	   int topo;	   medico elem[M];}pilha;pilha P;void inicializa_variaveis(){	 P.topo=0;	 for (I=0;I<=M;I++);	 {		 P.elem[I].CRM = "";		 P.elem[I].nome = "";		 P.elem[I].esp = "";		 P.elem[I].preco = 0;		 	 }}void inserir(){	 char resp;	 do	 	 {		 printf("\n\t\t\t\tINSERIR DADOS\n\n"); 		 printf("\n\n\n");		 if ( P.topo >= M )		 {			  printf("\n\n\t\t *** Erro de OVERFLOW. A Pilha esta cheia! ***\n\n");			  			  getchar();			  			  break;		 }		 else		 {			 P.topo = P.topo + 1;			 printf("\n\tInserindo na Posicao %d\n", P.topo);			 printf("\n\tCRM do Medico: \t\t\t");			 scanf("%13s", P.elem[P.topo].CRM);			 fflush(stdin);			 printf("\n\tNome: \t\t\t");			 scanf("%13s", P.elem[P.topo].nome);			 fflush(stdin);			 printf("\n\tEspecialidade: \t\t\t");			 scanf("%13s", P.elem[P.topo].esp);			 fflush(stdin);			 printf("\n\tPreco: \t\t\t");			 scanf("%13f", P.elem[P.topo].preco);			 fflush(stdin);			 printf("\n\n*** Dados Gravados com Sucesso! ***\n\n");		 }		 printf("\nDeseja cadastrar mais Medicos?(S/N): ");		 resp = getchar();		 system("cls");	}	while (resp=='S' || resp=='s');}void remover() //Procedimento para remover dados{	 char resp2;	 do	 {		  system("cls");		  printf("\n\t\t\t\tREMOVER DADOS\n\n");		  printf("\n\n");		  if (P.topo <= 0)		  {			 printf("\n\n\t\t*** Erro de UNDERFLOW. A Pilha esta vazia! ***\n\n");			 getchar(); 			 break;		  }		  else		  {			  printf("\n\tCRM: %s\n", P.elem[P.topo].CRM);			  printf("\n\tNome: %s\n", P.elem[P.topo].nome);			  printf("\n\tEspecialidade: %s\n", P.elem[P.topo].esp);			  printf("\tPreco: %s\n", P.elem[P.topo].preco);			  fflush(stdin);			  printf ("\n\tDeseja realmente remover os dados acima? (S/N): ");			  scanf ("%c", &resp2);			  fflush(stdin);			  if (resp2 != 'n' && resp2 != 'N')			  {				 printf ("\n\t*** OPERACAO CANCELADA ***\n");				 fflush(stdin);				 getchar();				 break;			  }			  else			  {				  strcpy(P.elem[P.topo].CRM, "");				  strcpy(P.elem[P.topo].nome, "");				  strcpy(P.elem[P.topo].esp, "");				  P.elem[P.topo].preco = 0;				  				  P.topo = P.topo+1;				  if( P.topo<=M )				  {					  for (i=0;i<=P.topo+1;i++)					  {						  strcpy(P.topo[i-1].CRM, P.topo[i].CRM);						  strcpy(P.topo[i-1].nome, P.topo[i].nome);						  strcpy(P.topo[i-1].esp, P.topo[i].esp);						  strcpy(P.topo[i-1].preco, P.topo[i].preco);					  }				  }				  P.topo = P.topo - 1;				  printf("\n\t*** Elemento removido com sucesso! ***\n");	   			  }				  				  /*P.elem[P.topo].CRM = " ";				  P.elem[P.topo].nome = " ";				  P.elem[P.topo].esp = " ";				  P.elem[P.topo].preco = 0;				  P.topo = P.topo - 1;				  printf("\n\t*** Elemento removido com sucesso! ***\n");*/	   			  		  }		  fflush(stdin);		  printf("\n\tDeseja excluir outro registro? (S/N) ");		  scanf ("%c", &resp);		  fflush(stdin);	 }while (resp=='s' || resp=='S');}void consultar() //Procedimeto para alterar dados{	 	 printf("\n\t\t\t	CONSULTAR DADOS DA PILHA\n\n");	 printf("\n\n\n");	 if( P.topo <= 0 )	 {		  printf("\n\n\t\t*** Erro de UNDERFLOW. A Pilha esta vazia! ***\n\n");		  getchar();	 }	 else	 {		 printf("\n\n\n\tElemento: %d", P.topo);		 printf("\n\n\tCRM: %s", P.elem[P.topo].CRM);		 printf("\n\tNome: %s", P.elem[P.topo].nome);		 printf("\n\tEspecialidade: %s", P.elem[P.topo].esp);		 printf("\n\tPreco: %s", P.elem[P.topo].preco);		 printf("\n\n");		 fflush(stdin);		 getchar();	 }}void listageral(){	 printf("\n\n\n Elemento: ");	 for (i = 9; i <= P.topo; i++) 		 printf("\t%d\t", i);	 printf("\n\n CRM:   ");	 for (i = 9; i <= P.topo; i++)		 printf("%13s\t", P.elem[i].CRM);	 printf("\n\n Nome:   ");	 for (i = 9; i <= P.topo; i++)		 printf("%13s\t", P.elem[i].nome);	 printf("\n\n Especialidade:   ");	 for (i = 9; i <= P.topo; i++)		 printf("%13s\t", P.elem[i].esp);	 printf("\n\n Preco:   ");	 for (i = 9; i <= P.topo; i++)		 printf("%13s\t", P.elem[i].preco);	 printf("\n\n");	 fflush(stdin);}void lista(){	 printf("\n\t\t\t	LISTANDO TODOS OS DADOS\n\n");	 printf("\n\n\n");	 if ( P.topo <= 0 )	 {			  printf("\n\n\t\t*** Erro de UNDERFLOW. A Pilha esta vazia! ***\n\n");			  getchar();	 }	 else	 {			  listageral();			  getchar();	 }}main(){   char num;   int op;   do   { //Menu Principal		system("cls");		printf("\n\n\n\n");		printf("\t\tAGENDA DE AMIGOS\t\n");		printf("\t\t\t\t\t\n\n\n");		printf("\t\t 1 - INSERIR \t\t\n");		printf("\t\t\t\t\t\n");		printf("\t\t 2 - REMOVER \t\t\n");		printf("\t\t\t\t\t\n");		printf("\t\t 3 - CONSULTAR\t\t\n");		printf("\t\t\t\t\t\n");		printf("\t\t 4 - LISTAGEM GERAL \t\t\n");		printf("\t\t\t\t\t\n");		printf("\t\t 5 - SAIR\t\t\n");						printf("\n\n\tInforme opcao: ");				  		scanf("%d",&num);				fflush(stdin);				system("cls");				switch(num)		{				   case 1:						inserir();						break;				   case 2:						remover();						break;				   case 3:						consultar();						break;				   case 4:						lista();						break;				   case 5: // Opção para sair do sistema						printf("\n\t\t\t	 Saindo do Sistema...\n\n"); 						getchar();						break;				   default: //Opção de escolha errada												printf("\n\t\t\t	 *** Opcao Invalida ***");						printf("\n\t\t	  *** Escolha as opcoes de 1 a 5! ***\n\n");						getchar();						break;		}   }   while(num!=5);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro se dá na parte do procedimento remover(), nesta parte do codigo:

 

for (i=0;i<=P.topo+1;i++)					   {						   strcpy(P.topo[i-1].CRM, P.topo[i].CRM);						   strcpy(P.topo[i-1].nome, P.topo[i].nome);						   strcpy(P.topo[i-1].esp, P.topo[i].esp);						   strcpy(P.topo[i-1].preco, P.topo[i].preco);					   }

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.