Simulación en C++

SIMULACION EN C++

DESCARGAR CODIGO FUENTE COMPLETO

DESCARGAR CABECERA
Este archivo va en la carpeta INCLUDE
 
SIMULA.CPP
 
   1: #include <dos.h>
   2: #include <stdlib.h>
   3: #include <colas.h>
   4:  
   5: typedef struct simulacion
   6: {
   7: int tiemposimulacion;
   8: int tiemposervicio;
   9: int probabilidad;
  10:  
  11: int relog;
  12:  
  13: int cajero;
  14:  
  15: int tiemposerviciototal;
  16: int clientesatendidos;
  17: };
  18:  
  19: void parametros(simulacion *p);
  20: int aleatorio(simulacion *a)
  21: {
  22: int x;
  23: float y;
  24: randomize();
  25: y=random(100);
  26: y=y*3.1416;
  27: x=y;
  28: y=y-x;
  29: y=y*100;
  30: if(a->probabilidad<=y)
  31:     {
  32:     return(1);
  33:     }
  34: else
  35:     {
  36:     return(0);
  37:     }
  38: }
  39:  
  40:  
  41: void llegacliente(cola *c)
  42: {
  43: if(aleatorio<=aleatorio)
  44:     {
  45:     push(c);
  46:     }
  47: }
  48:  
  49: void enmarcha(simulacion *e, cola *c)
  50: {
  51: inicializarcola(c);
  52: e->relog=0;
  53: e->cajero=0;
  54: e->clientesatendidos=0;
  55: e->tiemposerviciototal=0;
  56: int v=0;
  57: clrscr();
  58:  
  59: while(e->relog!=e->tiemposimulacion+1)
  60:     {
  61:     clrscr();
  62:     for(int v=0; v<max; v++)
  63:         {
  64:         *(c->cola+v)=*(c->cola+v)+1;
  65:         }
  66:     gotoxy(1,1);    cout<<"Minutos trancurridos: "<<e->relog;
  67:     (e->relog)++;
  68:  
  69:     gotoxy(40,1);    cout<<"Probabilidad "<<e->probabilidad;
  70:  
  71:     gotoxy(1,20);    cout<<"Clientes atendidos "<<e->clientesatendidos;
  72:  
  73:     gotoxy(40,20);    cout<<"Tiempo de espera total "<<e->tiemposerviciototal;
  74:     if(aleatorio(e)==0)
  75:         {
  76:         insertar(c);
  77:         for(int v=0; v<30; v++)
  78:             {
  79:             gotoxy(1,3);    cout<<"Ha llegado un cliente";
  80:             }
  81:         }
  82:  
  83:     if(e->cajero==0)
  84:         {
  85:         gotoxy(1,4);    borrar(c);
  86:         e->cajero=e->tiemposervicio;
  87:         }
  88:     (e->cajero)--;
  89:  
  90:  
  91:     if(e->cajero==0 && colavacia(c)==0)
  92:         {
  93:         (e->clientesatendidos)++;
  94:         e->tiemposerviciototal=e->tiemposerviciototal+*(c->cola+c->frente);
  95:         }
  96:  
  97:     getch();
  98:     }
  99: }
 100:  
 101:  
 102:  
 103: main()
 104: {
 105: clrscr();
 106: cola fila;
 107: tipodatocola colas[max];
 108: fila.cola=&colas[0];
 109:  
 110: simulacion simula;
 111: parametros(&simula);
 112: enmarcha(&simula, &fila);
 113: }
 114:  
 115:  
 116:  
 117:  
 118: void parametros(simulacion *p)
 119: {
 120: cout<<"Tiempo de duracion de la simulacion: ";            cin>>p->tiemposimulacion;
 121: cout<<"Tiempo limite del servicio del servidor: ";        cin>>p->tiemposervicio;
 122: cout<<"probabilidad de llegada de un cliente en un minuto ";    cin>>p->probabilidad;
 123: }



 


COLAS.H



   1: //COLAS
   2: //JULIO CESAR LEYVA RODRIGUEZ
   3: #include <conio.h>
   4: #include <iostream.h>
   5: #define max 100
   6: typedef int tipodatocola;
   7: typedef struct cola
   8: {
   9: tipodatocola *cola;                             
  10: int frente;
  11: int final;
  12: int contador;
  13: };
  14:  
  15: //INICIALIZAR COLA
  16: void inicializarcola(cola *inicializar)
  17: {
  18: inicializar->frente=max-1;
  19: inicializar->final=-1;
  20: gotoxy(40,5);    cout<<"SE HA INICIALIZADO LA COLA";
  21: }
  22:  
  23: //COLA LLENA
  24: int colallena(cola *llena)
  25: {
  26: if(llena->final==llena->frente-1)
  27:     {
  28:     return(1);
  29:     }
  30: else
  31:     {
  32:     return(0);
  33:     }
  34: }
  35:  
  36: //COLA VACIA
  37: int colavacia(cola *v)
  38: {
  39: if((v->frente==v->final) || (v->final==-1 && v->frente==max-1))
  40:     {
  41:         return(1);
  42:     }
  43: else
  44:     {
  45:     return(0);
  46:         }
  47: }
  48:  
  49: void push(cola *z)
  50: {
  51: if(z->final==max-1)
  52:     {                       
  53:     (z->final)=-1;
  54:     *(z->cola+z->final+1)=0;
  55:     }          
  56: else
  57:     {                                                                      
  58:     (z->final)++;
  59:         *(z->cola+z->final)=0;
  60:         }
  61: }
  62:  
  63: void insertar(cola *i)
  64: {
  65: tipodatocola cliente;
  66: if(colallena(i)==1)
  67:     {            
  68:     cout<<"La cola esta llena";
  69:     }
  70: else
  71:     {
  72:     push(i);
  73:     }
  74: }        
  75:  
  76: tipodatocola pop(cola *c)
  77: {
  78: tipodatocola dato;
  79: if(c->frente==max-1 && c->final>-1)
  80:     {       
  81:     c->frente=0;
  82:     dato=*(c->cola+c->frente);
  83:     return(dato);
  84:     }
  85: else                             
  86:     {
  87:     c->frente=c->frente+1;
  88:     dato=*(c->frente+c->cola);
  89:     return(dato);
  90:         }
  91: }
  92:  
  93: void borrar(cola *borrar)
  94: {
  95: if(colavacia(borrar)==1)
  96:     {
  97:     cout<<"La cola esta vacia";
  98:     }
  99: else
 100:     {
 101:     cout<<"El cliente a pasado al cajero con "<<pop(borrar)<<" minutos de espera";
 102:     }
 103: }
 104:  
 105: void visualizarcola(cola *v)
 106: {
 107: if(colavacia(v)==1)
 108:     {
 109:     cout<<"No hay datos";
 110:     }
 111: else
 112:     {
 113:     for(int x=v->frente; x<=v->final; x++)
 114:         {
 115:         if(x==max-1)
 116:             {
 117:             x=0;
 118:                         }
 119:         gotoxy(x+20,25);    cout<<*v->cola+1;
 120:         }
 121:         }
 122:  
 123: }    
 124:       
 125:  
 126:  
 127:  
 128: //MENU
 129: void menu(cola *menu) 
 130: {                                                      
 131: int op;
 132: do
 133:  
 134:     {
 135:     clrscr();
 136:     cout<<"Frente "<<menu->frente;
 137:         cout<<"\nFinal "<<menu->final;
 138:         cout<<"\nCola "<<(*menu->cola+menu->frente);
 139:      gotoxy(1,5);    cout<<"MENU";
 140:     gotoxy(1,6);    cout<<"1. INICIALIZAR";
 141:     gotoxy(1,7);    cout<<"2. INSERTAR";
 142:     gotoxy(1,8);    cout<<"3. BORRAR";
 143:     gotoxy(1,9);    cout<<"ELIGA UNA OPCION [   ]";
 144:     gotoxy(20,9);    cin>>op;
 145:     switch(op)
 146:         {
 147:         case 1:
 148:             inicializarcola(menu);
 149:             getch();
 150:             break;
 151:         case 2:
 152:             insertar(menu);
 153:             getch();
 154:             break;
 155:         case 3:
 156:                 borrar(menu);
 157:             getch();
 158:                         break;
 159:         case 4:
 160:             visualizarcola(menu);
 161:             getch();
 162:                         break;
 163:         }
 164:     }
 165:     while(op!=5);
 166: }
 167:  
0