private void drowResultDiagramm(int curTact) { int k = 20; int xmax = curTact + 1; int ymax = stack.Count + 2; //Diagramm. Diagramm.Width = xmax * k; Diagramm.Height = ymax * k; Diagramm.Refresh(); debug.Text = ""; Graphics diagramma = Diagramm.CreateGraphics(); Pen gridPen = new Pen(Color.Black, 1); gridPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; for (int i = 0; i <= ymax; i++) { diagramma.DrawLine(gridPen, 0, k * i, k * xmax, k * i); } for (int i = 0; i <= xmax; i++) { diagramma.DrawLine(gridPen, k * i, 0, k * i, k * ymax); } Pen borderPen = new Pen(Color.Black, 3); diagramma.DrawLine(borderPen, 0, k * ymax, k * xmax, k * ymax); diagramma.DrawLine(borderPen, 0, 0, 0, k * ymax); Pen readyPen = new Pen(Color.Red, 2); foreach (Proccess P in stack) { diagramma.DrawLine(readyPen, k * P.start_ready_tact, k * (ymax - 1), k * P.start_ready_tact, k * (ymax - P.number - 1)); diagramma.DrawLine(readyPen, k * P.start_work_tact, k * (ymax - 1), k * P.start_work_tact, k * (ymax - P.number - 1)); diagramma.DrawLine(readyPen, k * P.start_ready_tact, k * (ymax - P.number - 1), k * P.start_work_tact, k * (ymax - P.number - 1)); } Pen workPen = new Pen(Color.Blue, 5); foreach (Proccess P in stack) { diagramma.DrawLine(workPen, k * P.start_work_tact, k * (ymax - 1), k * P.start_work_tact, k * (ymax - P.number - 1)); diagramma.DrawLine(workPen, k * P.end_work_tact, k * (ymax - 1), k * P.end_work_tact, k * (ymax - P.number - 1)); diagramma.DrawLine(workPen, k * P.start_work_tact, k * (ymax - P.number - 1), k * P.end_work_tact, k * (ymax - P.number - 1)); } float sum_time_work = 0; float sum_time_wait = 0; string hr = "+------+-------+-------+------+-----+\n"; debug.Text += hr; debug.Text += "| Proc | Ready | Start | Work | End |\n"; debug.Text += hr; foreach (Proccess P in stack) { debug.Text += String.Format("| \"{0,1}\" | {1,2} | {2,2} | {3,2} | {4,2} |\n", P.name, P.start_ready_tact, P.start_work_tact, (P.end_work_tact - P.start_work_tact), P.end_work_tact); sum_time_work += P.end_work_tact - P.start_work_tact; sum_time_wait += P.tacts_of_wait; } debug.Text += hr; debug.Text += "\n среднее время выполнения = " + (sum_time_work / stack.Count) + "\n среднее время ожидания = " + (sum_time_wait / stack.Count); }