davide92 Posted June 6, 2012 at 10:04 PM Report Share #461101 Posted June 6, 2012 at 10:04 PM (edited) Boas noites a todos, tenho andado aqui de volta do trabalho de algoritmia e de repente apareceu-me este erro "milhares" de vezes. Tenho um estruturas.h assim : #ifndef ESTRUTURAS_H_INCLUDED #define ESTRUTURAS_H_INCLUDED #define MAX 60 /** Estrutura de ligação - INÍCIO */ struct no { struct no * prox; struct no * ant; void * dados; }; typedef struct no NO; typedef NO * PNO; typedef NO ** PPNO; /** Estrutura de ligação - FIM */ /** FUNCOES PARA AS DATAS - INÍCIO */ typedef struct data //Funcao para a data { int dia; int mes; int ano; } DATA; DATA ler_data() { int dia_max; DATA tmp; printf("\n\n Ano: "); printf("\n Mes: "); do { scanf("%d",&tmp.mes); if ((tmp.mes<1) || (tmp.mes>12)) { printf(" Introduziu errado o mes.\n"); printf(" Intoduza novamente o mes : "); } } while(tmp.mes<1 || tmp.mes>12); if (tmp.mes==1||tmp.mes==3||tmp.mes==5|| tmp.mes==7||tmp.mes==8||tmp.mes==10|| tmp.mes==12) dia_max=31; else if (tmp.mes==4||tmp.mes==6||tmp.mes==9|| tmp.mes==11) dia_max=30; else { if (tmp.mes%4==0) dia_max=29; else dia_max=28; } printf("\n Dia: "); do { scanf("%d",&tmp.dia); if (tmp.dia<1 || tmp.dia>dia_max) { printf(" Introduziu errado o dia.\n"); printf(" Introduza novamente o dia : "); } } while(tmp.dia<1 || tmp.dia>dia_max); return tmp; } /** FUNCOES PARA AS DATAS - FIM */ /** FUNCAO PARA AS HORAS - INÍCIO */ typedef struct horas //Funcao para a data { int hora; int minuto; } HORAS; HORAS ler_horas() { HORAS tmp; printf(" Horas: "); do { scanf("%d",&tmp.hora); if((tmp.hora<-1) || (tmp.hora>25)) { printf("Introduziu errado as horas.\n"); printf("Introduza novamente as horas: "); } } while (tmp.hora<-1 || tmp.hora>25); printf(" Minutos: "); do { scanf("%d",&tmp.minuto); if((tmp.minuto<-1) || (tmp.minuto>61)) { printf("Introduziu errado os minutos.\n"); printf("Introduza novamente os minutos: "); } } while(tmp.minuto<-1 || tmp.minuto>61); return tmp; } /** FUNCAO PARA AS HORAS - FIM */ /** Estruturas de dados - INÍCIO */ /* Ficha de Especialidade */ struct especialidade { char nome[MAX]; // Nome da especialidade char descricao[MAX]; // Descricao struct especialidade * prox; struct especialidade * ant; }; typedef struct especialidade ESPECIALIDADE; typedef ESPECIALIDADE * P_ESPECIALIDADE; typedef ESPECIALIDADE ** PP_ESPECIALIDADE; /* Ficha de Utente */ struct utente { char nome[MAX]; // Nome do utente DATA nascimento; // Data de nascimento do utente int telefone; // Telefone do utente char localidade[MAX]; // Localidade do utente char assistencia[MAX]; // Tipo de assistencia medica do utente int id; // Numero de identificacao do cartao do utente DATA validade; // Validade do cartao do utente char consultas[MAX]; // Historico de consultas do utente struct utente * prox; struct utente * ant; }; typedef struct utente UTENTE; typedef UTENTE * P_UTENTE; typedef UTENTE ** PP_UTENTE; /* Ficha de Medico */ struct medico { char nome[MAX]; // Nome do medico char especialidade[MAX]; // Especialidade do medico int nroincricao; // Numero de inscricao do medico char horario[MAX]; // Horario do medico HORAS duracaoconsultas; // Duracao das consultas struct medico * prox; struct medico * ant; }; typedef struct medico MEDICO; typedef MEDICO * P_MEDICO; typedef MEDICO ** PP_MEDICO; /* Ficha de Consultas */ struct consultas { char nome_utente[MAX]; // Nome do utente char especialidade_utente[MAX]; // Especialidade DATA data_consulta; // Data da consulta char horario_consulta; // Horario consulta struct medico * prox; struct medico * ant; }; typedef struct consultas CONSULTAS; typedef CONSULTAS * P_CONSULTAS; typedef CONSULTAS ** PP_CONSULTAS; /** Estruturas de dados - FIM */ #endif // ESTRUTURAS_H_INCLUDED E tenho um bocado de codigo para o bubblesort: int nascimentoCres_utente(P_UTENTE a, P_UTENTE b) { if(a->nascimento.ano > b->nascimento.ano) return 1; else return 0; } int conta(PNO cabeca) { PNO ptr; int cont=0; for (ptr=cabeca; ptr; ptr=ptr->prox) cont++; return cont; } /** Ordena com bubblesort */ void bubblesort (PNO cabeca, int (*compara)()) { PNO ptr; void * tmp; int i, tam = conta(cabeca); for(i=0; i<tam; i++) { for(ptr=cabeca; ptr->prox; ptr=ptr->prox) { if((*compara)(ptr->dados, ptr->prox->dados)) { tmp = ptr->dados; ptr->dados = ptr->prox->dados; ptr->prox->dados = tmp; } } } } /* Funções para ordenação com Bubblesort - FIM */ E tem-me dado os seguintes erros: C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c||In function 'criaMedico':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c|78|warning: format '%d' expects type 'int *', but argument 2 has type 'char (*)[60]'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c|81|warning: format '%d' expects type 'int *', but argument 2 has type 'struct HORAS *'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c||In function 'criaConsultas':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c|100|warning: format '%d' expects type 'int *', but argument 2 has type 'struct DATA *'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c|103|warning: format '%d' expects type 'int *', but argument 2 has type 'char *'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c|106|warning: control reaches end of non-void function| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c||In function 'criaMedico':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\criar_fichas.c|84|warning: control reaches end of non-void function| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c||In function 'escreveUTENTES':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|33|warning: format '%d' expects type 'int', but argument 3 has type 'DATA'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|33|warning: too few arguments for format| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|37|warning: format '%s' expects type 'char *', but argument 3 has type 'int'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|38|warning: format '%d' expects type 'int', but argument 3 has type 'DATA'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|38|warning: too few arguments for format| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c||In function 'escreveMEDICOS':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|54|warning: format '%d' expects type 'int', but argument 3 has type 'HORAS'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|54|warning: too few arguments for format| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c||In function 'escreveCONSULTAS':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|67|warning: format '%d' expects type 'int', but argument 3 has type 'DATA'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|67|warning: too few arguments for format| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\escrever_txt.c|68|warning: format '%s' expects type 'char *', but argument 3 has type 'int'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c||In function 'imprime_utente':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c|33|warning: format '%d' expects type 'int', but argument 3 has type 'DATA'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c|33|warning: format '%d' expects type 'int', but argument 5 has type 'char *'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c|33|warning: format '%s' expects type 'char *', but argument 7 has type 'int'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c|33|warning: format '%d' expects type 'int', but argument 8 has type 'DATA'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c|33|warning: format '%d' expects type 'int', but argument 9 has type 'char *'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c|33|warning: too few arguments for format| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c||In function 'imprime_medico':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c|41|warning: format '%d' expects type 'int', but argument 6 has type 'HORAS'| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\imprimir.c|41|warning: too few arguments for format| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\main.c||In function 'main':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\main.c|21|warning: unused variable 'fp'| obj\Debug\escrever_bin.o||In function `ler_data':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|multiple definition of `ler_data'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|first defined here| obj\Debug\escrever_bin.o||In function `ler_horas':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|multiple definition of `ler_horas'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|first defined here| obj\Debug\escrever_txt.o||In function `ler_data':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|multiple definition of `ler_data'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|first defined here| obj\Debug\escrever_txt.o||In function `ler_horas':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|multiple definition of `ler_horas'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|first defined here| obj\Debug\imprimir.o||In function `ler_data':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|multiple definition of `ler_data'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|first defined here| obj\Debug\imprimir.o||In function `ler_horas':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|multiple definition of `ler_horas'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|first defined here| obj\Debug\inserir.o||In function `ler_data':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|multiple definition of `ler_data'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|first defined here| obj\Debug\inserir.o||In function `ler_horas':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|multiple definition of `ler_horas'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|first defined here| obj\Debug\main.o||In function `ler_data':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|multiple definition of `ler_data'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|first defined here| obj\Debug\main.o||In function `ler_horas':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|multiple definition of `ler_horas'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|first defined here| obj\Debug\bubblesort.o||In function `ler_data':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|multiple definition of `ler_data'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|26|first defined here| obj\Debug\bubblesort.o||In function `ler_horas':| C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|multiple definition of `ler_horas'| obj\Debug\criar_fichas.o:C:\Users\Davide\Desktop\Projecto Final\Algoritmia\estruturas.h|88|first defined here| ||=== Build finished: 24 errors, 25 warnings ===| Edited June 6, 2012 at 10:06 PM by davide92 Link to comment Share on other sites More sharing options...
pmg Posted June 6, 2012 at 10:07 PM Report Share #461106 Posted June 6, 2012 at 10:07 PM Nao ponhas codigo em ficheiros .h. Apenas definicoes de tipos (struct XXX {} e typedefs), #defines, e prototipos de funcoes. No teu exemplo tens duas funcoes que deviam estar num ficheiro .c. Os prototipos das funcoes podem estar no .h e sao DATA ler_data(void); HORAS ler_horas(void); What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted June 6, 2012 at 10:07 PM Report Share #461108 Posted June 6, 2012 at 10:07 PM esse erro (normalmente) não tem nada haver com o que tens no ficheiro .h muito pelo contrário, tem haver com o que tens nos outros verifica a primeira linha de erro do compilador, essa diz-te toda a informação que necessitas - onde está declarado a estrutura e onde foi declarada previamente depois disso segue o processo de includes a ver onde estás a re-declarar a estrutura IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now