Ajuda em listas em c [RESOLVIDO]

1. Ajuda em listas em c [RESOLVIDO]

Bruno
uNclear

(usa Slackware)

Enviado em 15/04/2016 - 16:53h

Estou precisando adicionar em uma agenda varios compromissos, sendo que cada agenda pertence a um professor. Entao para fazer isso criei uma lista de compromissos e depois uma lista de agenda sendo que a lista de agenda tem um ponteiro para prox, ant e para baixo que sera onde encadeara os compromissos para cada agenda. So que estou tendo problemas com isso, abaixo coloquei o pedaço do codigo que estou tendo problemas. Desde ja agradeço o/

Structs
typedef struct Compromisso{
int idTipoComp; // id de um tipo de compromisso
char nomeComp[tam]; // nome de um compromisso
char data[tam]; // data de um compromisso
char hora[tam]; // hora de um compromisso
char duracao[tam]; // duracao de um compromisso
int grauPrio; // grau de prioridade de um compromisso
char status[tam]; // status do compromisso
char nomecComp[tam]; // nome de algo contido em um compromisso
char flag[tam]; // checa se o compromisso e adiavel ou nao
struct Compromisso *prox;
struct Compromisso *ant;
}compromisso;

typedef struct Agenda{
int idTipoAgenda;
char nomeProf[tam];
char ano[tam];
compromisso *inicioComp; // meio de acessar a struct compromisso
struct Agenda *prox;
struct Agenda *ant;
struct Agenda *down;
}agenda;

typedef struct AgComp{
compromisso *head; // cabeça da lista compromisso
agenda *headAg; // cabeça da lista agenda
int id;
int idAg;
int cont;
}agComp;


Funçoes de criar agenda e de copiar um compromisso atraves do id para um determinado id da agenda
void criaAgenda(agComp *pheadAg){
agenda *new = (agenda *)malloc(sizeof(agenda));
new->down = NULL;
if(pheadAg->headAg == NULL){
new->prox = NULL;
new->ant = NULL;
}else{
new->prox = pheadAg->headAg;
pheadAg->headAg->ant = new;
}
pheadAg->headAg = new;

printf("Digite o nome do professor\n");
scanf("%s", new->nomeProf);
printf("Digite o ano\n");
scanf("%s", new->ano);
new->idTipoAgenda = pheadAg->idAg++;
}

void insereCompromisso(agComp *pheadAg, agComp *phead){
agenda *aux = NULL;
compromisso *aux1 = NULL;
int id, id1;
printf("Digite o id de uma agenda para inserir um compromisso\n");
scanf("%d", &id);
procuraIdAgenda(pheadAg, id, &aux);
if(aux == NULL){
printf("Id de agenda nao encontrado\n");
}else{
printf("Digite o id de um compromisso para inserir na agenda de id %d\n", id);
scanf("%d", &id1);
procuraId(phead, id1, &aux1);
if(aux1 == NULL){
printf("Id de compromisso nao encontrado\n");
}else{
compromisso *new;
new = (compromisso *)malloc(sizeof(compromisso));
if(aux->down == NULL){
new->prox = NULL;
aux->down = new; // parte que o eclipse da uma aviso de incompatibilidade
}else{
while(aux != NULL){
aux = aux->down;
}
new->prox = new;
new->prox = NULL;
}
//copyCompForAg(phead, &new, &aux1);
strcpy(new->data, aux1->data);
strcpy(new->hora, aux1->hora);
strcpy(new->duracao, aux1->duracao);
strcpy(new->flag, aux1->flag);
new->grauPrio = aux1->grauPrio;
new->idTipoComp = aux1->idTipoComp;
strcpy(new->nomeComp, aux1->nomeComp);
strcpy(new->nomecComp, aux1->nomecComp);
strcpy(new->status, aux1->status);
}
}
}


Espero ter sido claro ;c


  


2. Re: Ajuda em listas em c [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/04/2016 - 18:38h

O problema que você está tendo é só o alerta do Eclipse?

Bom, eu nunca usei Eclipse para programar em C ou C++, e não sei se ele tem front-ends separados para C e C++. Se não tiver, o problema pode ser justamente esse, e o alerta pode ser decorrência do fato de que “new” é uma palavra reservada em C++, que serve justamente para alocar memória.

Se você aceita uma sugestão, troque o nome dessa variável para outra coisa, até para que ela seja mais descritiva.


3. Ajuda em listas em c

Bruno
uNclear

(usa Slackware)

Enviado em 15/04/2016 - 18:42h

paulo1205 escreveu:

O problema que você está tendo é só o alerta do Eclipse?

Bom, eu nunca usei Eclipse para programar em C ou C++, e não sei se ele tem front-ends separados para C e C++. Se não tiver, o problema pode ser justamente esse, e o alerta pode ser decorrência do fato de que “new” é uma palavra reservada em C++, que serve justamente para alocar memória.

Se você aceita uma sugestão, troque o nome dessa variável para outra coisa, até para que ela seja mais descritiva.


Obrigado pela atençao, mais o problema neste caso nao esta sendo este ;c


4. Resolvido

Bruno
uNclear

(usa Slackware)

Enviado em 15/04/2016 - 20:15h

Eu consegui resolver o problema depois de quase 2 dias quebrando a cabeça. A soluçao e q o meu ponteiro down era do tipo agenda, e o certo seria q ele fosse do tipo compromisso.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts