private void button2_Click(object sender, EventArgs e) { string ruta = this.ruta; StreamReader lectr = new StreamReader(ruta); int numProc = Convert.ToInt16(lectr.ReadLine()); lectr.Close(); StreamWriter Escritor = new StreamWriter(@"C: \Users\frodo\Desktop\Planificacion\GantAlterno.txt"); // cola de usados Queue usados = new Queue(numProc); // crear vector de procesos Proceso[] vectProc = new Proceso[numProc]; for (int i = 0; i < vectProc.Length; i++) vectProc[i] = new Proceso(); // crear cola de procesos Queue colaProc = new Queue(numProc); Queue colaCop = new Queue(numProc); // crear un planificador Planificador plnfcdr1 = new Planificador(); // leer archivos y meterlos en el vector Planificador.leerArchivo(vectProc,ruta); int llegada = vectProc[0].GSTiempoLLegada; int maximo = 0; foreach (Proceso P in vectProc) maximo += P.GSduracion; plnfcdr1.gant = new string[numProc, maximo*2]; plnfcdr1.InicarGant(numProc, maximo*2); // decidir segund el algoritmo de planificacion switch (this.comboBox1.Text) { case "SJF": int espera = 1; int Tinicio = 1; int Tfinal = 1; int yValue = 1; int cont = 0; while ( cont < numProc ) { Proceso Procesado = plnfcdr1.PlanificarSJF(colaProc, vectProc, Tinicio,Tfinal, espera); plnfcdr1.LLenarGant(Procesado, cont, maximo); if ( !this.GantAlterno.Checked ) Graficar(Procesado, yValue, espera); colaCop.Enqueue(Procesado); if (Procesado != null) { Tinicio += Procesado.GSTiempoLLegada; Tfinal += Procesado.GSduracion; espera += Procesado.GSduracion; this.display(Procesado); yValue++; cont++; } Tfinal++; } break; case "FcFs": yValue = 1; espera = 1; foreach(Proceso p in vectProc) { colaProc.Enqueue(p); Proceso Procesado = plnfcdr1.PlanificarFcFs(colaProc, espera); plnfcdr1.LLenarGant(Procesado, yValue -1, maximo); colaCop.Enqueue(Procesado); Graficar(Procesado, yValue, espera); espera += Procesado.GSduracion ; yValue++; this.display(Procesado); } break; case "SJFX": ArrayList l = new ArrayList(); foreach (Proceso p in vectProc) l.Add(p); int i = 0; Queue Procesados = plnfcdr1.PlanificarSJFX(l); foreach (Proceso p in Procesados) { this.display(p); try { this.GraficarProceso(p, i + 1 , p.Tinicio); i++; } catch(Exception Ex) { i++; } } colaCop = Procesados; break; case "SRTF": // meter procesos a la lista ArrayList ListaProc = new ArrayList(); foreach (Proceso P in vectProc ) ListaProc.Add(P); i = 0; Queue ProcesadosSRTF = plnfcdr1.PlanificarSRFT(ListaProc); // dar salida grafica foreach( Proceso P in ProcesadosSRTF ) { this.display(P); try { this.GraficarProceso(P, i + 1, P.Tinicio); } finally { i++; } } colaCop = ProcesadosSRTF; break; case "Round Robin": // meter procesos a la lista ArrayList ListaProcRR = new ArrayList(); foreach (Proceso P in vectProc) ListaProcRR.Add(P); i = 0; // planificar RR Queue ProcesadosRR = plnfcdr1.PlanificarRR(ListaProcRR); // graficar procesos foreach (Proceso P in ProcesadosRR) { this.display(P); try { this.GraficarProceso(P, i + 1, P.Tinicio); } finally { i++; } } colaCop = ProcesadosRR; break; case "Priority": ArrayList lentrada = new ArrayList(); foreach (Proceso p in vectProc) lentrada.Add(p); colaCop = plnfcdr1.PlanificarPrioridad(lentrada); i = 1; foreach (Proceso p in colaCop) { this.display(p); this.GraficarProceso(p, i, p.Tinicio); i++; } break; case "PriorityX": ArrayList lentradaP = new ArrayList(); foreach (Proceso p in vectProc) lentradaP.Add(p); colaCop = plnfcdr1.PlanificarPrioridadX(lentradaP); i = 1; foreach (Proceso p in colaCop) { this.display(p); this.GraficarProceso(p, i, p.Tinicio); i++; } break; case "HRRN": ArrayList ListaEntrada = new ArrayList(); ArrayList ListaEstatica = new ArrayList(); foreach (Proceso p in vectProc) { ListaEntrada.Add(p); ListaEstatica.Add(p); } colaCop = plnfcdr1.PlanificarHRRN(ListaEntrada); foreach( Proceso p in colaCop) { this.display(p); this.GraficarProceso(p, 1+ plnfcdr1.ConvertIndx(p, ListaEstatica), p.Tinicio); } break; } // poner el tiempo promedio en la etiqeta plnfcdr1.ImprimirGantTxt(Escritor, numProc, maximo*2, vectProc); Escritor.Close(); if (this.GantAlterno.Checked) this.DsplGantAlt(); this.lblPromedio.Text = string.Format("{0:C2}" , Convert.ToString( (float)plnfcdr1.GetStdstcs(colaCop, numProc) )); }