private void fillchartRR(int Q) { int totalBurst = 0; List <Process> sortedList = processes.OrderBy(a => a.getArrival()).ToList(); for (int i = 0; i < sortedList.Count; i++) { totalBurst += sortedList[i].getBurst(); } Random r = new Random(); for (int i = 0; i < processes.Count; i++) { chart1.Series.Add(processes[i].getName()); chart1.Series[i].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.RangeBar; chart1.Series[i].Color = Color.FromArgb(r.Next(256), r.Next(256), r.Next(256)); } int currentlyExecuted = 0; int time = sortedList[0].getArrival(); int totalJobs = processes.Count; int waitingTimeround = 0; int currentJob = 0; List <Process> final = new List <Process>(); while (currentlyExecuted < totalBurst) { Process current = sortedList.ElementAt(currentJob); if (current.getArrival() <= time) { if ((current.getBurst() - current.getExec()) > 0) { if ((current.getBurst() - current.getExec()) >= Q) { current.setExec(current.getExec() + Q); chart1.Series[current.getName()].Points.AddXY(current.getName(), time + Q, time); waitingTimeround = waitingTimeround + (time - current.getDeparture()); time = time + Q; currentlyExecuted += Q; current.setDeparture(time); } else { chart1.Series[current.getName()].Points.AddXY(current.getName(), time + current.getBurst() - current.getExec(), time); waitingTimeround = waitingTimeround + (time - current.getDeparture()); time = time + (current.getBurst() - current.getExec()); currentlyExecuted += (current.getBurst() - current.getExec()); current.setExec(current.getBurst()); current.setDeparture(time); } } } currentJob = (++currentJob) % totalJobs; } waitingT.Text = (waitingTimeround / totalJobs).ToString(); }