PDA

View Full Version : سوال: سوال درباره ساختمان داده "صف" در سی شارپ



B3HI13
دوشنبه 04 دی 1396, 22:22 عصر
سلام ، بنده در حال انجام پروژه درس سیستم عامل هستم که میخواد الگوریتم FCFS و SJF و RR رو پیاده سازی کنیم. من اطلاعات رو از فایل گرفتم داخل یه آرایه ریختم ، بعد آرایه رو بر اساس زمان ورود از کوچک به بزرگ مرتب کردم . بعد یکی یکی به یه صف وارد کردم . الان میخوام که این اطلاعات رو از صف بکشم بیرون منتهی یکم قاطی کردم و نمی دونم تو تابع FCFS چیکار باید کنم. ممنون میشم یه راهنمایی کوچیک کنید . کدی که نوشتم رو هم می ذارم اگه می تونه به پاسختون کمک کنه . با تشکر



static int numberOfProcesses = 0; //Number of processes

Queue<Process> ProcessesList = new Queue<Process>();

private void Form1_Load(object sender, EventArgs e)
{
Process[] processArray;
using (TextReader txtReader = File.OpenText("InputFile.dat"))
{
string txt = txtReader.ReadLine();
string[] Values = txt.Split(' ');
//numbers = new int[Values.Length];

for (int i = 2; i < Values.Length ; i += 4) // (i = 0) => Qt , (i = 1) => CSt , (i = 2) => operation , (i = 3) => getting in operation time , (i = 4) => executing operation time , (i = 5) => priority ( '_' ) operation
{
numberOfProcesses++; //counting processes in the file
}
processArray = new Process[numberOfProcesses];
int j = 2; // to add in array corectry
for (int i = 2; i < Values.Length; i += 4) // (i = 0) => Qt , (i = 1) => CSt , (i = 2) => operation , (i = 3) => getting in operation time , (i = 4) => executing operation time , (i = 5) => priority ( '_' ) operation
{
Process x = new Process(Convert.ToInt32(Values[i]), Convert.ToInt32(Values[i + 1]), Convert.ToInt32(Values[i + 2]), Convert.ToInt32(Values[i + 3]));
processArray[i - j] = x;
j += 3;
}
}
sortArray(processArray); //sending processArray to sort it by getIn Time
}


private void sortArray(Process[] a)
{
for(int i = 0; i < a.Length - 1; i++)
{
for(int j = i + 1; j < a.Length; j++)
{
if(a[i].getInTime > a[j].getInTime)
{
int temp;
temp = a[i].getInTime;
a[i].getInTime = a[j].getInTime;
a[j].getInTime = temp;
}
}
}
for(int i =0; i < a.Length; i++)
{
listBox1.Items.Add("Process #" + i + " Get in Time is : " + a[i].getInTime);
ProcessesList.Enqueue(a[i]);
}
}


public void FCFS()
{
int z = 0; //contains whole execute times
for (int i = 0; i < numberOfProcesses; i++)
{
//ProcessesList.Dequeue
}
}

B3HI13
سه شنبه 05 دی 1396, 16:06 عصر
:افسرده:up