Simulación en C++
SIMULACION EN C++
DESCARGAR CODIGO FUENTE COMPLETO
DESCARGAR CABECERA
Este archivo va en la carpeta INCLUDE
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:
Comentarios
Publicar un comentario