示例#1
0
        private void button1_Click(object sender, EventArgs e)
        {
            count++;
            if (count < numericUpDown1.Value)
            {
                process p = new process();
                p.addProcess(textBox1.Text);
                textBox1.Text = "";
                p.addArrival(Convert.ToInt32(textBox2.Text));
                textBox2.Text = "";
                p.addBurst(Convert.ToInt32(textBox3.Text));
                textBox3.Text = "";

                processes.Add(p);
            }
            else
            {
                process p = new process();
                p.addProcess(textBox1.Text);
                p.addArrival(Convert.ToInt32(textBox2.Text));
                p.addBurst(Convert.ToInt32(textBox3.Text));
                processes.Add(p);
                Form2 f = new Form2();
                f.Show();
                this.Hide();
                count = 0;
            }
        }
示例#2
0
        //Time calculations and store the final processes' queue in a new list and linked list
        static void arrange(process task, int start, int total)
        {
            task.completionTime  = total - start;
            task.turnArroundTime = task.completionTime - task.arrivalTime;
            task.waitingTime     = task.turnArroundTime - task.burstTime;
            queue.Add(task);

            if (output.Count == 0)
            {
                output.AddFirst(task);
                index = output.Last;
            }
            else
            {
                output.AddLast(task);
                index = output.Last;
            }
        }
示例#3
0
        //Main function
        static void Main(string[] args)
        {
            Console.Write("Enter number of processes: ");
            processesNum = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            process task = new process();

            for (int i = 1; i <= processesNum; i++)
            {
                task.pID = i;
                Console.Write("Enter arrival time of process " + i + ": ");
                task.arrivalTime = Convert.ToInt32(Console.ReadLine());

                Console.Write("Enter burst time of process " + i + ": ");
                task.burstTime = Convert.ToInt32(Console.ReadLine());

                processes.Add(task);

                Console.WriteLine();
            }

            //sort the list according to the arrival time
            processes.Sort((x, y) => x.arrivalTime - y.arrivalTime);

            int start = processes[0].arrivalTime;
            int total = 0;

            foreach (process i in processes)
            {
                total += i.burstTime;
                arrange(i, start, total);
            }
            processes.Clear();

            float averageWaitingTime = 0;
            float averageTurnArround = 0;

            //print sorted list elements
            Console.WriteLine("\t Arrival time \t Burst time \t completion time \t Turn arround \t waiting time");
            int p = 1;

            foreach (process k in queue)
            {
                Console.Write("process {0}: ", p);
                Console.WriteLine(k.arrivalTime + "\t\t" + k.burstTime + "\t\t" + k.completionTime + "\t\t\t" + k.turnArroundTime + "\t\t" + k.waitingTime);
                averageWaitingTime += k.waitingTime;
                averageTurnArround += k.turnArroundTime;
                p++;
            }
            Console.WriteLine();

            Console.Write("Sequence: ");
            foreach (process i in queue)
            {
                Console.Write(i.pID + " ");
            }
            Console.WriteLine("\n");

            averageWaitingTime /= processesNum;
            averageTurnArround /= processesNum;

            Console.WriteLine("Average waiting time = " + averageWaitingTime);
            Console.WriteLine("Average turn arround time = " + averageTurnArround);
            foreach (process k in output)
            {
                Console.WriteLine(k.pID + "\t\t" + k.arrivalTime + "\t\t" + k.burstTime + "\t\t" + k.completionTime + "\t\t\t" + k.turnArroundTime + "\t\t" + k.waitingTime);
            }
            Console.ReadLine();
        }