Filas

Publicado por Rafael Dutra 28/05/2005

[ Hits: 7.696 ]

Homepage: www.du3x.com

Download trabfila.c




Esse é um programinha que fiz para o meu curso, é um progrma de filas, a pessoa insere o trabalho a ser impresso e pode colocar mais quatro pra ficar na fila, tem muita bobagem junto no programa mas espero que gostem.

  



Esconder código-fonte

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

// Registro
struct str_fila
{
   char impressao[20];
   struct str_fila *prox;
};
typedef struct str_fila fila;
fila *inicio, *fim, *primeiro, *ultimo, *aux;

/* ----------------------------------- */

// Inicio de programa

int main ()
{
int opcao,x, mos, t=1; //t é contador
char impressao [20];
   
   printf("\n\n\t\t\t ************************************************ \n");
   printf("\t\t\t ************************************************ \n\n");
   printf ("\t\t\t        PROGRAMA PARA CONTROLE DE IMPRESSÃO   \n");
   printf ("\t\t\t        Programador Rafael Dutra         \n");
   printf ("\t\t\t          Versão: Talvez a 0.78         \n");
   printf ("\t\t\t         Feito em Slackware 10.0             \n");
   printf ("\t\t\t         Free, Powerful and safe!         \n");
   printf ("\t\t\t              Kernel 2.4.26         \n");
   printf ("\t\t\t                KDE 3.4.0            \n\n");
   printf("\t\t\t ************************************************ \n");
   printf("\t\t\t**************************************************\n\n");
   
   while (opcao!=5)
   {

   printf("\n\t\t\tTrabalho sendo usado");
   if(inicio==NULL)
      {
      printf("\t[ Nenhum trabalho no momento ]\n");
      }
         else
         {
         printf("\t>>>> :: %s :: <<<<\n",inicio);
         }
   printf("\n\t\tStatus da fila da impressão\n");
   printf("\t\tTrabalhos na fila de impressão");
   if(inicio==NULL)
   {      
   printf("\t[ Nenhum trabalho na fila de espera ]\n");
   }
         else
         {
         mos=mostrar();
         if(mos==1)
         {
         printf("\t[ Nada no momento ]\n");
         }
            else
            {
            for(aux=inicio->prox;aux!=NULL;aux=aux->prox)
               {
               printf("\t[ %s ]\n\t\t\t\t\t",aux->impressao);
               }   
            }
         }
   printf("\nEscolha uma das opções abaixo\n");
   printf("1 - Inserir trabalho para imprimir\n");
   printf("2 - Remover um trabalho da fila\n");
   printf("3 - Chamar logotipo\n");
   printf("4 - Sobre o autor\n");
   printf("5 - Sair\n");
   printf("Digite sua opcao:");
   scanf ("%d",&opcao);
   if (opcao==1)
   {
   mos=mostrar ();
      if (t<=5) //t == contador
      {
      printf("Digite o trabalho a ser impresso:");
      scanf ("%s", &impressao);
      enqueue (impressao);
      t++;
      x=1;
      }
            else 
            {
            printf("\n\t\t\t\t >>> [ A lista de impressão está cheia ] <<<\n");
            }
   }

         if (opcao==2)
         {
         dequeue ();
         t--;
         x=1;
         }

      if (opcao==3)
      {
      logotipo();
      }

            if (opcao==4)
            {
            about();
            }
      
      if (opcao==5)
      {
      printf ("\t\tVoce optou por sair do programa\n");
      x=0;
      }
   }
}

/* ----------------------------------- */

dequeue()
{
   int retorno=0;
   fila *aux;
      if(inicio==NULL)
      {
      printf("\nFila vazia\n");
      
      }
         else
         {
         retorno=inicio->impressao;
         aux=inicio;
         inicio=inicio->prox;
         free(aux);
         }
      return;
}

/* ----------------------------------- */

enqueue(char impressao[]) //inserir
{
   ultimo=malloc(sizeof(fila));
   strcpy (ultimo->impressao,impressao);
   ultimo->prox=NULL;
   if(inicio==NULL)
      {
      inicio=ultimo;
      fim=ultimo;
      }
         else
         {
         fim->prox=ultimo;
         fim=ultimo;
         }
}

/* ----------------------------------- */
mostrar()
{
   int t=0;
   for(aux=inicio;aux!=NULL;aux=aux->prox)
   {
   t ++;
   }
   return t;
}
/* ----------------------------------- */
logotipo ()
{
   printf("\t\t\t ************************************************ \n");
   printf("\t\t\t ************************************************ \n\n");
   printf ("\t\t\t        PROGRAMA PARA CONTROLE DE IMPRESSÃO   \n");
   printf ("\t\t\t        Programador Rafael Dutra         \n");
   printf ("\t\t\t          Versão: Talvez a 0.78         \n");
   printf ("\t\t\t         Feito em Slackware 10.0             \n");
   printf ("\t\t\t         Free, Powerful and safe!         \n");
   printf ("\t\t\t              Kernel 2.4.26         \n");
   printf ("\t\t\t                KDE 3.4.0            \n\n");
   printf("\t\t\t ************************************************ \n");
   printf("\t\t\t**************************************************\n\n");
}

/* ----------------------------------- */
about ()
{
   printf ("\t\t\t E-mail: raffaeldutra@gmail.com\n");
   printf ("\t\t\t Usuário no site vivaolinux: Law\n");
   printf ("\t\t\t     Linux User #376.904\n\n\n");
}

// Fim de Programa

Scripts recomendados

SIMULADOR DE DADOS DE RPG VAMPIRO A MÁSCARA - Corrigido

Decimal, Hexa, Char para Binário

Seqüência de Fibonacci

Cálculo de divisores de um número.

Jogo para adivinhar o numero


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts