Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mariana.duarte

Filas - projeto

Recommended Posts

Gente, eu estou fazendo um projeto utilizando filas e listas de uma agência bancária, mas estou um pouco confusa... É possível utilizar filas e listas como eu estou fazendo? Se alguém puder me ajudar, obrigada :)

 

#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<time.h>

typedef struct lista{
		int info;
		struct lista *prox;
}Lista;

typedef struct lista2{
		char nome;
		char sexo;
		char operacao;
		struct lista2 *prox;
}Lista2;

typedef struct fila{
		Lista2 *inicio;
		Lista2 *fim;
}Fila;

Fila* cria()
{
	  Fila *f=(Fila*)malloc(sizeof(Fila));
	  f->inicio=f->fim=NULL;
	  return f;
}

Lista *inserir_inicio(Lista *l)
{
	  Lista *novo;
	  int num;
	  
		 novo=(Lista*)malloc(sizeof(Lista));
	  
		 novo->info=num;
		 novo->prox= l;
		 l=novo;  
	  return l;
}
	
Lista* inserir(Lista *l){
	   Lista *aux;
	   aux=(Lista*)malloc(sizeof(Lista));
	   aux->prox=l; 
	   l=aux;
	   return l;
}

void inserir(Fila *f){
	  int x;
	  
	  Lista2 *aux=(Lista2*)malloc(sizeof(Lista2));
	  
	  printf("\nDigite seu nome:\n");
	  fflush(stdin);
	  scanf("%s",aux->nome);
	  printf("\nDigite seu sexo(M/F)");
	  fflush(stdin);
	  scanf("%c",&aux->sexo);
	  printf("\nQual operacao deseja realizar (saque/deposito)");
	  scanf("%c",&aux->operacao);
	  aux->prox=NULL;
	  if(f->inicio==NULL){
			f->inicio=aux;
	  }
	  else{
			f->fim->prox=aux;		
	  }
	  f->fim=aux;
}

void imprimir(Lista *l){
	   Lista *aux=0;
	   int cont=1;
	   aux=l;
	   
	   if(aux==NULL){
		   printf("\nNao há ninguém na fila\n");
	   }
	   while(aux!=NULL)
	   {
						printf("\n Caixa %d. Há %d na fila", aux->info,cont);
						aux=aux->prox;
						cont++;
	   }
	   
	   getch();
}

int isEmpty(Fila *f){
	 
	  if(f->inicio==NULL)
			   return 0;
	   else
			   return 1;
}

void impressao_f(Fila *f){
	 Lista2 *aux;
	 aux = f->inicio;
	 if(aux==NULL){
		printf("\nFila vazia!");
	 }
	 while(aux!=NULL){
		   printf("\nNome %s\n Sexo: %c\n Operacao: %c", aux->nome,aux->sexo,aux->operacao);
		   aux=aux->prox;
	 }
}

int verificar(Fila *f){
	 int x;
	 Lista2 *aux;
	 if(f->inicio!=NULL)
	 {
			x=f->inicio->info;
			aux=f->inicio;
			f->inicio=f->inicio->prox;
			free(aux);
			return x;
	 } 
}   
				 
main(){
	   
	   Fila *f,*f2;
	   f=cria();
	   f2=cria();
	   Lista *l=NULL,*l2=NULL;
	   int op, cont = 0,i,x,op1,aux,y;
	   char priori;
	   srand(time(NULL));
	   
	   
	   getche();
	   
	   do{
				system("cls");
				printf("\n [1] - Entrada no banco\n");
				printf("\n [2] - Impress%co da fila\n",198);
				printf("\n [3] - Preenchimento da ficha\n");
				printf("\n [4] - Impress%co das fichas\n",198);
				printf("\n [0] - Sair\n");
				printf("\n Digite a op%c%co desejada:\n",135,198);
				scanf("%d",&op);
				switch(op){
				case 1:
					  system("cls");
					  y = rand()%2;
					  printf("\nV%c para a fila %d\n",160,y+1);
					  
					  printf("\nVoc%c %c idoso, gestante ou deficiente? (S/N)",136,130);
					  fflush(stdin);
					  scanf("%c",&priori);
					  if(priori=='s'||priori=='S'){
						 printf("\nVoc%c tem prioridade... Ser%c atendido imediatamente!",136,160);
						 l = inserir(l);
						 getche();
					  }
					  if(priori=='n'||priori=='N'){
						 printf("\nVoc%c n%co tem prioridade... Aguarde sua vez!",136,198,198);
						 l2 = inserir(l2);
						 getche();
					  }
					  break;
				case 2:
					  printf("\nCom prioridade:\n");
					  imprimir (l);
					  printf("\nSem prioridade:\n");
					  imprimir (l2);
					  getche();
					  break; 
				case 3:
					  system("cls");
					  system("cls");
								while(isEmpty(f) == 1){
										 y = verificar(f);
										 printf("\n Caixa %d com prioridade\n",y);
										 if(y == 1)
											  inserir(f);
										  else
											  inserir(f2);	 
								}
								system("cls");
								printf("\n\a Fila de prioridades Vazia");
								_sleep(1200);
								system("cls");
								while(isEmpty(f2) == 1){			   
										 if(verificar(f2) == 1){
												  printf("\n Caixa 1\n");
												  inserir(f);
										 }
										 else{
												  printf("\n Caixa 2\n"); 
												  inserir(f2);
										 }
								}
								system("cls");
								printf("\n\a Fila Normal Vazia");
								_sleep(1200);
								break;
				case 4:
					  system("cls");
					  printf("\nCom prioridade:\n");
					  impressao_f (f);
					  printf("\nSem prioridade:\n");
					  impressao_f(f2);
				case 0:
					  printf("\nDigite qualquer tecla para sair");
					  break;
				}
					  }while(op!=0);
					  getche();
	   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola mariana, bem fica meio confuso entender o que você deseja, exemplifique melhor o que deseja, tipo o que você quer fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.