Minha Lista tem apresentado alguns problemas, e estou ficando com algumas dúvidas na passagem de parametros, e ela está com erro na hora de imprimir. Arquivos .h // agenda.h
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "Compromisso.h"
struct agenda{
int idAgend;
int identProf;
char nomeProfer[MAX];
int ano;
Compromisso *c;
struct agenda *prox;
}; typedef struct agenda Agenda;
Agenda * criaAgenda(Agenda *a, int idProf, char *name, int ano);
Agenda * insereCompromisso(Agenda *a,char *tip,char *name,Data *dat, int hor, int durac);
Agenda * novoAgenda(Agenda *a,Compromisso *comp);
void imprimeAgenda(Agenda *a);
/* ------------------------------------------------------------------------------------------------------------------------------ */
//Compromisso.h
#define MAX 100
enum boolean { true=1,false=0 };
typedef enum boolean bool;
enum Status { A_SER_CUMPRIDO=1, ADIADO=2, CANCELADO=3 };
typedef enum Status stats;
typedef struct{
int dia;
int mes;
int ano;
}Data;
typedef struct{
char tipo[MAX];
char nome[MAX];
Data data;
int hora;
int duracao;
int prioridade;
stats status;
bool adiavel;
int identificador;
} Compromisso;
int inicializaCompromisso(Compromisso *c,char *tip,char *name,Data *dat,int hor, int durac);
void alteraPrioridade(Compromisso *c,int priorid);
int retornaPrioridade(Compromisso *c);
bool eAdiavel(Compromisso *c);
bool temConflito(Compromisso *c1, Compromisso *c2);
void atribuiStatus(Compromisso *c,stats status1);
void imprimeCompromisso(Compromisso *c);
Arquivos .c
//Compromisso.c
#include "agenda.h"
int i=0;
int inicializaCompromisso(Compromisso*c,char *tip,char *name,Data *dat, int hor, int durac){
c->identificador=++i;
c->hora=hor;
c->duracao=durac;
if(strcmp("Aula",tip)==0)
c->prioridade=2;
else if(strcmp("Orientacao",tip)==0)
c->prioridade=1;
else if(strcmp("Reuniao",tip)==0)
c->prioridade=4;
else if(strcmp("Evento",tip)==0)
c->prioridade=3;
else if(strcmp("Compromisso Particular",tip)==0)
c->prioridade=2;
strcpy(c->tipo,tip);
strcpy(c->nome,name);
c->status=A_SER_CUMPRIDO;
c->adiavel=false;
c->data.dia=dat->dia;
c->data.mes=dat->mes;
c->data.ano=dat->ano;
return c->identificador;
}
void alteraPrioridade(Compromisso *c,int priorid){
c->prioridade=priorid;
}
int retornaPrioridade(Compromisso *c){
return c->prioridade;
}
bool eAdiavel(Compromisso *c){
if(c->tipo=="Aula" || c->tipo == "Evento")
return false;
else
return true;
}
bool temConflito(Compromisso *c1, Compromisso *c2){//Já testada.
if((c1->data.dia==c2->data.dia)&&(c1->data.mes==c2->data.mes)&&(c1->data.ano==c2->data.ano) && (c1->hora==c2->hora))
return true;
else
return false;
}
void atribuiStatus(Compromisso *c,stats status1){ c->status=status1; }
stats retornaStatus(Compromisso *c){ return c->status; }
void imprimeCompromisso(Compromisso *c){
printf("Identificador: %d\n",c->identificador);
printf("Tipo: %s\n",c->tipo);
printf("Data: %d/%d/%d\n",c->data.dia,c->data.mes,c->data.ano);
printf("Hora: %d:00\n",c->hora);
if(strcmp(c->tipo,"Evento")==0)
printf("Duracao: %d\n",c->duracao);
else{
printf("Duracao: %d\n",c->duracao); }
if(strcmp("Aula",c->tipo)==0)
printf("Nome da Disciplina: %s\n",c->nome);
else if(strcmp("Orientacao",c->tipo)==0)
printf("Nome do Aluno: %s\n",c->nome);
else if(strcmp("Reuniao",c->tipo)==0)
printf("Nome da Reuniao: %s\n",c->nome);
else if(strcmp("Evento",c->tipo)==0)
printf("Nome do Evento: %s\n",c->nome);
else if(strcmp("Compromisso Particular",c->nome)==0)
printf("Motivo: %s\n",c->nome);
if(c->status==A_SER_CUMPRIDO)
printf("A Ser Cumprido\n");
else if(c->status==ADIADO)
printf("Adiado\n");
else if(c->status==CANCELADO)
printf("Cancelado\n");
if(c->adiavel==true)
printf("Pode ser adiado\n");
if(c->adiavel==false)
printf("não pode ser adiado\n");
}
/* --------------------------------------------------------------------------------------------------------------------------------------------------- */
//agenda.c
#include "agenda.h"
static int idenAgend=1;
Agenda * criaAgenda(Agenda *a, int idProf, char *name, int ano){
a=(Agenda *)malloc(sizeof(Agenda));
a->identProf=idProf;
strcpy(a->nomeProfer,name);
a->ano=ano;
a->idAgend=idenAgend;
a->prox=NULL;
idenAgend++;
return a;
}
Agenda * novoAgenda(Agenda *a,Compromisso *comp){
Agenda *novo=(Agenda*)malloc(sizeof(Agenda));
novo->c=comp;
novo->prox=a;
return novo;
}
Agenda * insereCompromisso(Agenda *a,char *tip,char *name,Data *dat, int hor, int durac){
int x=inicializaCompromisso(&(a->c),tip,name,dat,hor,durac);
Agenda *b=novoAgenda(a,(a->c));
return b;
}
void imprimeAgenda(Agenda *a){
Agenda *z;
printf("Id Agenda: %d\n",a->idAgend);
printf("ID Professor: %d\n",a->identProf);
printf("Nome do Professor: %d\n",a->nomeProfer);
printf("Ano: %d\n",a->ano);
printf("\n");
for(z=a;z->prox!=NULL;z=z->prox){
imprimeCompromisso(&(z->c));
getch();
printf("\n");
}
}
[/quote]E a main.
[quote]
#include "agenda.h"
int main(){
bool g;
int a,b,cd;
char name[]="Natan Avila";
char nameEvent[]="Cervejada";
char nameEvent2[]="Calourada";
char nameEvent3[]="Trote";
Data *dat;
dat->dia=29;
dat->mes=01;
dat->ano=2010;
char tip[]="Evento";
char tip2[]="Orientacao";
char tip3[]="Compromisso Particular";
Agenda *k=criaAgenda(k, 2626, name, 2011);
k=insereCompromisso(k,tip,nameEvent,dat,06,50);
imprimeAgenda(k);
k=insereCompromisso(k,tip2,nameEvent2,dat,02,40);
imprimeAgenda(k);
k=insereCompromisso(k,tip3,nameEvent3,dat,16,60);
imprimeAgenda(k);
imprimeAgenda(k);
system("pause");
free(k);
return 0;
} Como podem ver, o código apresenta erros durante a compilação, e não consigo resolver, principalmente na função de imprimir... Se alguém souber alguma possível solução, ou informar o que está errado, eu agradeceria :D