【发布时间】:2014-03-10 14:39:58
【问题描述】:
我被分配了一个家庭作业来编写 first-fit 算法,这意味着根据 first-Fit 算法将一组作业分配给一组内存块。到目前为止,我的算法可以正确地工作和分配工作;但是,我的问题是当我的排队作业输出到控制台时,我的循环不会遍历所有发送到队列的作业,它只显示发送到队列的初始作业及其大小,直到所有要发送的作业to queue 已被迭代。
这可能很简单,但我似乎无法弄清楚......还有什么需要的,只要问我就可以提供。谢谢。
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!";
}
}
大小为 45 的作业 1 已加载到内存块:1 的大小 内存块 1 现在是 16
大小为 1230 的作业 2 已加载到内存块:2 的大小 内存块 2 现在是 410
大小为 325 的作业 3 已加载到内存块:2 的大小 内存块 2 现在是 85
大小为 303 的作业 4 已加载到内存块:3 的大小 内存块 3 现在是 131
大小为 1178 的作业 5 已加载到内存块中:5 的大小 内存块 5 现在是 393
大小为 1276 的作业 6 已加载到内存块:6 的大小 内存块 6 现在是 426
大小为 965 的作业 7 已加载到内存块中:7 的大小 内存块 7 现在是 322
大小为 537 的作业 8 被发送到等待队列!
大小为 537 的作业 8 被发送到等待队列!
大小为 537 的作业 8 被发送到等待队列!
【问题讨论】:
-
一些代码会有所帮助...
-
你能提供一些代码示例吗?
-
在黑暗中拍摄...这是否显示了 10 个工作会发生什么?例如,最后两行“Job 8 ...”实际上应该是
Job 9和Job 10?检查遍历队列中作业的代码,并确保您的控制变量正在递增,并且您正在使用该控制变量来获取正确的作业。另外,在调试时,检查您的队列是否确实有 Job 9 和 Job 10。您是否可以将 Job 8 插入 3 次。 -
是的,应该是 10 个工作,最后 2 个工作应该是工作 9 和工作 10,有自己的尺寸....出于某种原因,这让我从昨天开始就卡住了 >.
标签: c# algorithm for-loop output