sábado, 25 de mayo de 2013

Codigo de fifo en Linux mediante el g++


#include<iostream>
#include<stdlib.h>

using namespace std;

struct nodo
{
     char proceso;
     int tllegada;
     int tejecucion;
     int tfinal;
     int tretorno;
     int tespera;
     int tmuerto;
     struct  nodo *sgte;
};

struct cola
{
   struct  nodo *delante;
   struct  nodo *atras;
};

void inicializa(struct cola&);
void encola(struct cola&,struct nodo);
void vercola(struct cola);

int main()
{
   system("/usr/bin/clear");
    int  opc,n;
 
    struct nodo cte;
    struct  cola q;
    inicializa(q);
 
   do
   {

      cout<<"*** MENU ***\n";
      cout<<"1. Encolar\n";
      cout<<"2. Visualizar cola\n";
      cout<<"3. Salir";
      cout<<"\n  INGRESE OPCION: ";cin>>opc;

      switch(opc)

      {
      case 1:
                cout<<"ingrese numero de paquetes de la cola:";cin>>n;
                cte.tfinal=0;
                cte.tmuerto=0;
                for(int i=1;i<=n;i++)
                  {
                   cout<<"Ingrese proceso "<<i<<":"; cin>>cte.proceso;
                   cout<<"Tiempo de llegada:";cin>>cte.tllegada;
                   cout<<"Tiempo de ejecucion:";cin>>cte.tejecucion;
               
                   cte.tfinal=(cte.tejecucion)+(cte.tfinal);
                   cte.tretorno=cte.tfinal-cte.tllegada;
                   cte.tespera=cte.tretorno-cte.tejecucion;
                   cte.tmuerto=cte.tespera+cte.tmuerto;
                   
                   encola(q,cte);

                  }
                   system("/usr/bin/clear");

                 break;
        case 2:
                 system("/usr/bin/clear");
                 cout<<"\nLOS ELEMENTOS DE LA COLA:\n";
                 cout<<"proc.\tt.lleg.\tt.ejec.\tt.fin.\tt.ret.\tt.esp."<<endl;
                 vercola(q);
                cout<<"El tiempo muerto es:"<<cte.tmuerto<<endl;
                cout<<endl;
                 break;

      }


   }while(opc!=3);

}

void inicializa(struct cola&q)
{
  q.delante=NULL;
  q.atras=NULL;
}

void vercola(struct cola q)
{
 struct nodo*p;
 p=q.delante;
 while(p!=NULL)
   {
    cout<<p->proceso<<"\t"<<p->tllegada<<"\t"<<p->tejecucion<<"\t"<<p->tfinal<<"\t"<<p->tretorno<<"\t"<<p->tespera<<endl;
    p=p->sgte;
   }
   cout<<endl;

}

void encola(struct cola &q,struct nodo cte)
{
 struct nodo*p;
 p=new(struct nodo);
 *p=cte;//asignacion de estructuras
 p->sgte=NULL;
 if(q.delante==NULL)
    q.delante=p;
 else
   (q.atras)->sgte=p;
 q.atras=p;
}