import java.util.ArrayList;
class RoundRobin
{
ArrayList cola;
int suma=0;
int quantum;
Proceso proc;
public RoundRobin(ArrayList cola)
{
this.cola=cola;
}
public String generar()
{
//sacamos la suma de los tiempos_CPU de cada proceso
for (int i=0; i<cola.size(); i++)
{
proc=(Proceso)cola.get(i);
suma+=proc.getTiempoCPU();
}
quantum=suma/cola.size();
//variables
String cadena="";
int contador=0;
int aux;
int suma_tiempo=0;
//proc=(Proceso)cola.get(contador);
boolean flag=true;
//Algoritmo
while(flag)
{
aux=proc.getTiempoCPU();
if (aux>0)
{
if (aux>=quantum)
{
proc.setTiempoCPU(aux-quantum);
suma_tiempo+=quantum;
cadena+="|"+proc.getIdProceso()+"| t"+suma_tiempo+" n";
}
else
{
proc.setTiempoCPU(0);
suma_tiempo+=aux;
cadena+="|"+proc.getIdProceso()+"| t"+suma_tiempo+" n";
}
}
//identifica si hay mas procesos por terminar
contador++;
if (contador<cola.size())
{
proc=(Proceso)cola.get(contador);
flag=find();
}
else
{
contador=0;
proc=(Proceso)cola.get(contador);
flag=find();
}
}
return cadena+"El tiempo fue: "+suma_tiempo;
}
private boolean find ()//encuentra procesos restantes
{
Proceso p;
boolean f=false;
for (int i=0; i<cola.size();i++)
{
p=(Proceso)cola.get(i);
if (p.getTiempoCPU()>0)
{
f=true;
break;
}
}
return f;
}
}