C#第一拟合算法输出
我被分配了一个家庭作业来编写first fit算法,它意味着根据first fit算法将一定数量的作业分配给一定数量的内存块。到目前为止,我的算法工作和分配工作的正确;然而,我的问题是,当我的排队作业被输出到控制台时,我的循环不会遍历发送到队列的所有作业,它只显示发送到队列的初始作业及其大小,直到所有要发送到队列的作业都被遍历为止 这可能很简单,但我似乎无法理解。。。。任何其他需要的都可以问我,我可以提供。多谢各位C#第一拟合算法输出,c#,algorithm,for-loop,output,C#,Algorithm,For Loop,Output,我被分配了一个家庭作业来编写first fit算法,它意味着根据first fit算法将一定数量的作业分配给一定数量的内存块。到目前为止,我的算法工作和分配工作的正确;然而,我的问题是,当我的排队作业被输出到控制台时,我的循环不会遍历发送到队列的所有作业,它只显示发送到队列的初始作业及其大小,直到所有要发送到队列的作业都被遍历为止 这可能很简单,但我似乎无法理解。。。。任何其他需要的都可以问我,我可以提供。多谢各位 public void firstFit(int counter, int Jo
public void firstFit(int counter, int JobIndex)
{
Counter = counter;
jobIndex = JobIndex;
do {
if (jobSize[jobIndex] > memorySize[Counter-1])
{
Counter += 1;
}
else
{
Console.Text += Environment.NewLine + "Job " + (jobIndex+1) + " of size "
+ jobSize[jobIndex] +
" has been loaded into memory block:"
+ Counter;
memorySize[Counter-1] = memorySize[Counter-1]-jobSize[jobIndex];
Console.Text += Environment.NewLine + "The size of memory block " + Counter + " is now " + memorySize[Counter-1];
Counter = 1;
jobIndex += 1;
}
} while (Counter <= blocks && jobIndex < jobs);
for (int i = 0; i < jobs-jobIndex; i++ ){
jobQ = jobIndex;
if (jobQ < jobs)
{
Console.Text += Environment.NewLine + "Job " + (jobQ+1) + " of size " + jobSize[jobQ] + " is sent to waiting queue!";
}
}
public void firstFit(int计数器、int作业索引)
{
计数器=计数器;
jobIndex=jobIndex;
做{
if(作业大小[作业索引]>内存化[计数器-1])
{
计数器+=1;
}
其他的
{
Console.Text++=Environment.NewLine++“作业”+(作业索引+1)+“大小”
+作业大小[作业索引]+
“已加载到内存块:”
+计数器;
memorySize[Counter-1]=memorySize[Counter-1]-作业大小[jobIndex];
Console.Text+=Environment.NewLine+“内存块的大小”+计数器+”现在是“+memorySize[Counter-1];
计数器=1;
工作指数+=1;
}
}而(计数器您在末尾有以下代码:
for (int i = 0; i < jobs-jobIndex; i++ )
{
jobQ = jobIndex;
if (jobQ < jobs)
{
Console.Text += Environment.NewLine + "Job " + (jobQ+1) + " of size " +
jobSize[jobQ] + " is sent to waiting queue!";
}
}
??已排序。感谢Ryan为我指明了正确的方向。问题是我没有试图获取进入队列所需的所有值的作业编号,我只是获取了作业编号jobQ+1,它始终是同一个作业,第一个不适合的作业。我的作业大小也是一样的
以下是我必须更改的代码:
for (int i = 0; i < jobs-jobIndex; i++ ){
jobQ = jobIndex;
if (jobQ < jobs)
{
Console.Text += Environment.NewLine + "Job " + (jobQ+(i+1)) + " of size " +
jobSize[jobQ+i]) + " is sent to waiting queue!";
}
}
for(int i=0;i
一些代码会有帮助…你能提供一些代码示例吗?在黑暗中拍摄…这是否显示了10个作业的情况?如最后两个“作业8…”行实际上应该是作业9
和作业10
?检查在队列中迭代作业的代码,确保控制变量正在递增,并且您正在使用该控制变量获取正确的作业。此外,在调试过程中,检查您的队列中是否确实有作业9和作业10。可能是您插入了作业8三次。是的,应该是10个作业,最后两个作业应该是作业9和作业10,大小各不相同……出于某种原因,这让我从昨天起就一直被卡住了><可能只是看错了,我盯着代码看了这么久,这几乎就是问题所在,每次都输出相同的值……我结束了我试图用一种与你提出的略有不同的方式来解决这个问题,但在提出问题后的8小时内无法回答我自己的问题。
for (int i = 0; i < jobs-jobIndex; i++ ){
jobQ = jobIndex;
if (jobQ < jobs)
{
Console.Text += Environment.NewLine + "Job " + (jobQ+(i+1)) + " of size " +
jobSize[jobQ+i]) + " is sent to waiting queue!";
}
}