C#第一拟合算法输出

C#第一拟合算法输出,c#,algorithm,for-loop,output,C#,Algorithm,For Loop,Output,我被分配了一个家庭作业来编写first fit算法,它意味着根据first fit算法将一定数量的作业分配给一定数量的内存块。到目前为止,我的算法工作和分配工作的正确;然而,我的问题是,当我的排队作业被输出到控制台时,我的循环不会遍历发送到队列的所有作业,它只显示发送到队列的初始作业及其大小,直到所有要发送到队列的作业都被遍历为止 这可能很简单,但我似乎无法理解。。。。任何其他需要的都可以问我,我可以提供。多谢各位 public void firstFit(int counter, int Jo

我被分配了一个家庭作业来编写first fit算法,它意味着根据first fit算法将一定数量的作业分配给一定数量的内存块。到目前为止,我的算法工作和分配工作的正确;然而,我的问题是,当我的排队作业被输出到控制台时,我的循环不会遍历发送到队列的所有作业,它只显示发送到队列的初始作业及其大小,直到所有要发送到队列的作业都被遍历为止

这可能很简单,但我似乎无法理解。。。。任何其他需要的都可以问我,我可以提供。多谢各位

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!";


 }
}