dsucuri 0 Denunciar post Postado Novembro 1, 2006 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
dsucuri 0 Denunciar post Postado Novembro 1, 2006 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