por SpecialOne » Segunda Mai 11, 2009 10:12
A ideia é fazer um programa que liste as chamadas não atendidas de um telemovel, usando listas ligadas.
O programa esta com alguns bugs, nomeadamente, não imprime a data e, eu insiro dois numero na lista e quando tento imprimir o conteudo da lista so imprime o ultimo ultimo inserido.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Estrutura da lista */
typedef struct ListNA{
int num;
char data[9]; /* Formato da data di-me-an do tipo 21-12-09 */
char hm[5]; /* formato da hora ho:mi do tipo 21:34 */
struct ListNA *seg;
} Chamadas;
typedef Chamadas *NaoAtendi;
/* Função que verifica se uma lista esta vazia */
int vazia(NaoAtendi l){
return l == NULL;
}
/* Função que cria uma lista vazia */
NaoAtendi criaLista(){
return NULL;
}
/* Função que insere na cabeça da lista a informação relativa a chamadas não atendidas */
NaoAtendi insereCab(int n,char *d, char *h,NaoAtendi l){
NaoAtendi aux;
aux = (NaoAtendi) malloc(sizeof(Chamadas));
if(vazia(l)) { aux -> num = n; /* Se a lista l (fornecida como parametro estiver vazia */
strcpy(aux->data,d); /* Copia para a lista aux campo data a data que é fornecida como parametro */
strcpy(aux->hm,h); /* Copia para a lista aux campo hora a hora que é fornecida como parametro */
aux -> seg = NULL;
l = aux;
return l;
}
else { aux -> num = n; /* Se a lista l (fornecida como parametro estiver vazia */
strcpy(aux->data,d); /* Copia para a lista aux campo data a data que é fornecida como parametro */
strcpy(aux->hm,h); /* Copia para a lista aux campo hora a hora que é fornecida como parametro */
aux -> seg = l;
return aux;
}
}
/* Função que imprime chamadas*/
void imprimeCha(NaoAtendi l) {
NaoAtendi r;
for(r=l;!vazia(r);r=r->seg){
printf("Numero: %d \n data: %s \n hora: %s \n",r->num,r->data,r->hm);
}
free(r);
}
int main(){
int n,i,k;
char dat[9];
char hora[5];
NaoAtendi l;
l = criaLista();
printf("Quantos numeros quer inserir ?\n");
scanf("%d",&k);
for(i=0;i<k;i++){
printf("Insira o numero de telemovel\n");
scanf("%d",&n);
printf("Insira a data com o seguinte formato di-me-an, do tipo 12-01-09\n");
scanf("%s",dat);
printf("Valor da variavel data %s\n",dat);
printf("Insira a hora com o seguinte formato ho:mi, do tipo 12:23\n");
scanf("%s",hora);
}
l = insereCab(n,dat,hora,l);
imprimeCha(l);
return 0;
}