Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #define max 10
- struct row{
- int vet[max];
- int begin;
- int end;
- int qtd[max];
- }typedef fila;
- void inicia(fila *f){
- f->begin=0;
- f->end=0;
- }
- void add(fila *f,int x){
- f->vet[f->end]=x;
- f->end++;
- }
- int remover(fila *f){
- int x;
- x=f->vet[f->begin];
- f->begin++;
- return x;
- }
- void mostrar(fila *f){
- fila aux;
- int x,y;
- inicia(&aux);
- printf(" _________________________________________\n\n");
- while(f->end!=f->begin){
- y=f->qtd[f->begin];
- x=remover(f);
- add(&aux,x);
- printf(" Placa: %d Quantidade de movimento: %d\n",x,y);
- }
- inicia(f);
- while(aux.end!=aux.begin) add(f,remover(&aux));
- printf(" __________________________________________\n");
- }
- int menu(){
- char opc;
- printf(" _________________________________\n");
- printf("|_________Estacionamento__________|\n");
- printf("| |\n");
- printf("|S-Sair |\n");
- printf("|C-Chegar |\n");
- printf("|P-Partir |\n");
- printf("|M-Mostrar |\n");
- printf("|_________________________________|\n");
- printf("Digite uma opcao: ");
- fflush(stdin);
- scanf("%c",&opc);
- opc = toupper(opc);
- return opc;
- }
- void chegada(fila *f,fila *espera,int x,int vet[]){
- printf("Carro estacionado com sucesso.\n");
- f->qtd[f->end]=0;
- vet[f->end]=x;
- add(f,x);
- }
- void partidaEspera(fila *f,int x,int vet[]){
- fila aux;
- inicia(&aux);
- while(f->vet[f->begin]!=x)add(&aux,remover(f));
- printf("Placa: %d\n",remover(f));
- printf("Removido da fila de espera.\n");
- while(f->begin!=f->end) add(&aux,remover(f));
- inicia(f);
- while(aux.end!=aux.begin){
- vet[f->end]=aux.vet[aux.begin];
- add(f,remover(&aux));
- }
- }
- void partida(fila *f,fila *espera,int x,int vet[]){
- fila aux;
- int c;
- inicia(&aux);
- while(f->vet[f->begin]!=x){
- aux.qtd[aux.end]=f->qtd[f->begin];
- aux.qtd[aux.end]++;
- add(&aux,remover(f));
- }
- c=f->qtd[f->begin];
- printf("Placa: %d\nQuantidades de movimento: %d\n",remover(f),c);
- printf("Obrigado por usar o estacionamento.\n");
- while(f->end!=f->begin){
- aux.qtd[aux.end]=f->qtd[f->begin];
- aux.qtd[aux.end]++;
- add(&aux,remover(f));
- }
- inicia(f);
- while(aux.end!=aux.begin){
- f->qtd[f->end]=aux.qtd[aux.begin];
- vet[f->end]=aux.vet[aux.begin];
- add(f,remover(&aux));
- }
- if(espera->end>espera->begin){
- vet[f->end]=espera->vet[espera->begin];
- add(f,remover(espera));
- }
- }
- int main(){
- int x,opc,vet[10],vet1[10],achou=0;
- fila espera;
- fila fil;
- inicia(&fil);
- inicia(&espera);
- for(int i=0;i<10;i++){
- vet[i]=-1;
- vet1[i]=-1;
- }
- do{
- opc=menu();
- switch(opc){
- case 'S':
- printf("....Obrigado por usar o programa....\n");
- break;
- case 'C':
- printf("Digite o numero da placa: ");
- scanf("%d",&x);
- if(fil.end==max){
- if(espera.end==max)printf("Estacionamento cheio e fila de espera cheia.\n");
- else{
- printf("Fila de espera estacionamento cheio.\n");
- for(int i=0;i<10;i++){
- if(vet[i]==x) achou=1;
- if(vet1[i]==x) achou=1;
- }
- if(achou) printf("Carro na lista de espera ou ja estacionado.\n");
- else{
- espera.qtd[espera.end]=0;
- add(&espera,x);
- vet1[espera.end]=x;
- }
- }
- }
- else{
- for(int i=0;i<10;i++){
- if(vet[i]==x) achou=1;
- if(vet1[i]==x) achou=1;
- }
- if(achou)printf("Carro ja estacionado ou na fila de espera.\n");
- else chegada(&fil,&espera,x,vet);
- }
- achou=0;
- break;
- case 'P':
- if(fil.end!=fil.begin){
- printf("Digite o numero da placa: ");
- scanf("%d",&x);
- for(int i=0;i<10;i++){
- if(vet[i]==x) achou=1;
- if(vet1[i]==x) achou=2;
- }
- if(achou==1)partida(&fil,&espera,x,vet);
- else if(achou==2) partidaEspera(&espera,x,vet);
- else{
- printf("Carro nao estacionado e nao esta na fila de espera.\n");
- }
- }
- else printf("Estacionamento vazio.\n");
- achou=0;
- break;
- case 'M':
- mostrar(&fil);
- if(espera.begin!=espera.end) mostrar(&espera);
- break;
- default:
- printf("Opcao invalida\n");
- break;
- }
- system("pause");
- system("cls");
- }while(opc!='S');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement