quem quiser dar um bizu ta ai:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef struct ticket
{
char carro[50];
char placa[50];
int move;
int tick;
time_t hora_entrada;
struct ticket *prox;
}nodo;
struct tm *ptr;
int ticket=1;
void imprime_hora(nodo *lista)//funciona
{
ptr=localtime(&lista->hora_entrada);
printf(asctime(ptr));
}
void insere(nodo **lista,char *car,char *plac)//funciona
{
nodo *novo;
novo=(nodo*)malloc(sizeof(nodo));
strcpy(novo->carro,car);
strcpy(novo->placa,plac);
novo->hora_entrada=time(NULL);
novo->move=0;
novo->tick=ticket;
novo->prox=*lista;
*lista=novo;
ticket++;
printf("\nSEU TICKET COMPROVANTE É %d\n",novo->tick);
}
void entrada(nodo **lista)//funciona
{
char car[50],plac[50];
printf("\n NOME DO CARRO: \t");
gets(car);
printf("\n PLACA: \t");
gets(plac);
insere(&*lista,car,plac);
}
void imprime(nodo **lista)//funciona
{
nodo *aux;
if (*lista==NULL)
{
printf("LISTA VAZIA MANEH \n");
}
else
{
aux=*lista;
printf("\nCarro: %s",aux->carro);
printf("\nPlaca: %s",aux->placa);
printf("\nMovimentacoes: %d",aux->move);
printf("\nHorario de entrada:");
imprime_hora(aux);
}
}
int verifica_fila_cheia(nodo **lista)//funciona
{
int i=0;
nodo *aux;
aux=*lista;
while(aux!=NULL)
{
aux=aux->prox;
i++;
}
if(i>=4)
return 1;
else
return 0;
}
void cabecalho()
{
printf("----------------------------------------------------------------------------\n");
printf("| |\n");
printf("|\t\t\tBEM VINDO AO STAR PARK I (beta)\t\t\t |\n");
printf("| |\n");
printf("----------------------------------------------------------------------------\n");
}
void desenha(nodo ** l1,nodo ** l2, nodo ** l3,nodo **l4)//funciona
{
nodo *aux1,*aux2,*aux3,*aux4;
int i;
aux1=*l1;
aux2=*l2;
aux3=*l3;
aux4=*l4;
printf("\t\t\t|---|---|---|---|\n");
for(i=0;i<4;i++)
{
printf("\t\t\t|");
if(aux1!=NULL)
{
printf(" X ");
aux1=aux1->prox;
}
else
{
printf(" ");
}
printf("|");
if(aux2!=NULL)
{
printf(" X ");
aux2=aux2->prox;
}
else
{
printf(" ");
}
printf("|");
if(aux3!=NULL)
{
printf(" X ");
aux3=aux3->prox;
}
else
{
printf(" ");
}
printf("|");
if(aux4!=NULL)
{
printf(" X ");
aux4=aux4->prox;
}
else
{
printf(" ");
}
printf("|");
printf("\n");
}
}
nodo *busca_carro(nodo **lista,int key)
{
nodo *aux;
aux=*lista;
while(aux!=NULL)
{
if(aux->tick==key)
return aux;
aux=aux->prox;
}
return NULL;
}
void insere_manobra(nodo **carro,nodo **pilha_manobra)
{
nodo *novo;
novo=(nodo*)malloc(sizeof(nodo));
strcpy(novo->carro,(*carro)->carro);
strcpy(novo->placa,(*carro)->placa);
novo->move=((*carro)->move);
novo->tick=(*carro)->tick;
novo->hora_entrada=(*carro)->hora_entrada;
novo->prox=*pilha_manobra;
*pilha_manobra=novo;
}
void retorna_estacionamento(nodo **manobra,nodo **lista)
{
nodo *novo;
novo=(nodo*)malloc(sizeof(nodo));
strcpy(novo->carro,(*manobra)->carro);
strcpy(novo->placa,(*manobra)->placa);
novo->move=((*manobra)->move+1);
novo->hora_entrada=(*manobra)->hora_entrada;
novo->tick=(*manobra)->tick;
novo->prox=*lista;
*lista=novo;
free(*manobra);
}
void retira(nodo ** saindo,nodo **lista)
{
nodo *aux,*manobra=NULL;
aux=*lista;
if(aux==(*saindo) || ((*lista)->prox)==NULL )
{
(*lista)=(*lista)->prox;
free(*saindo);
}
else
{
while(aux!=(*saindo))
{
insere_manobra(&aux,&manobra);
aux=aux->prox;
free((*lista));
*lista=aux;
}
*lista=(*lista)->prox;
free(*saindo);
aux=manobra;
while(aux!=NULL)
{
retorna_estacionamento(&manobra,&*lista);
aux=aux->prox;
}
}
}
int main ()
{
int escolha,tic;
nodo *fila1=NULL,*fila2=NULL,*fila3=NULL,*fila4=NULL,*aux;
cabecalho();
do{
printf("DIGITE A OPCAO DESEJADA:\n");
printf("\t1-REGISTRAR ENTRADA DE VEICULO;\n\t2-REGISTRAR SAIDA DE UM VEICULO;\n\t3-IMPRIMIR O STATUS DO ESTACIONAMENTO;\n\t4-SAIR;\n\t");
scanf("%d",&escolha);
fflush(stdin);
switch(escolha)
{
case 1:
if(verifica_fila_cheia(&fila1)==0)
entrada(&fila1);
else
{
if(verifica_fila_cheia(&fila2)==0)
entrada(&fila2);
else
{
if(verifica_fila_cheia(&fila3)==0)
entrada(&fila3);
else
{
if(verifica_fila_cheia(&fila4)==0)
entrada(&fila4);
else
printf("O ESTACIONAMENTO ESTA CHEIO... PROCURE OUTRA FILIAL!!!\n");
}
}
}
break;
case 2: printf("Digite o codigo do ticket:");
scanf("%d",&tic);
aux=busca_carro(&fila1,tic);
if(aux!=NULL)
{
imprime(&aux);
retira(&aux,&fila1);
}
else
{
aux=busca_carro(&fila2,tic);
if(aux!=NULL)
{
imprime(&aux);
retira(&aux,&fila2);
}
else
{
aux=busca_carro(&fila3,tic);
if(aux!=NULL)
{
imprime(&aux);
retira(&aux,&fila3);
}
else
{
aux=busca_carro(&fila4,tic);
if(aux!=NULL)
{
imprime(&aux);
retira(&aux,&fila4);
}
}
}
}
if(aux==NULL)
printf("CARRO NAO ENCONTRADO\n");
break;
case 3: desenha(&fila1,&fila2,&fila3,&fila4);
break;
case 4:printf("OBRIGADO POR UTILIZAR O SISTEMA\n");
break;
}
}while(escolha!=4);
system("PAUSE");
return 0;
}