如何转换'两个(for循环)到a(while循环)?

时间:2012-11-15 16:40:42

标签: c loops for-loop while-loop simulation

我在三个小时内模拟一家快餐店。三个小时分为18个间隔,每个间隔600秒。每个间隔输出有关600秒内发生的事件的统计数据。

我原来的结构是这样的:

int i;
for (i=0; i<18; i++)
    interval(customerArrive);

int interval(double customerArrive)

...
...

int t;
for (t=0;t<600;t++)

这两个方法(for循环)不起作用,因为它不允许时间成为连续函数。如果在t = 599的第一个时间间隔内发生事件(如客户到达),则在t = 601时该事件将不存在,因为在第二个时间间隔开始时所有事件都将被删除。

我想要解决这个问题的方法是制作一个while循环来让时间成为一个连续的函数,我只是不知道如何将我的代码“转换”为此。

会是这样的吗?

while (t<10800)
{
...
}

我不确定这个while循环退出时需要什么条件。

如有必要,请输入我的完整代码:http://pastebin.com/3ec0Ks9u

2 个答案:

答案 0 :(得分:0)

“可能是”,我理解你的问题。如果你想监视某些东西(用你的话来说是连续的功能),你需要得到线程和计时器的帮助,这在你的范围之外。如果你想要的话使用基本的东西,问题不太清楚,请重新构建。

答案 1 :(得分:0)

  

[...]第二个间隔开始时,所有内容都会被删除。

这不是由于两个for循环,而是由于外部for循环调用函数,并重新初始化该函数中的东西。所以将外部for循环移动到函数interval(可能会改变方法名称,因为它不再适合)。在那种方法中你可以写

int i, t;
… // initialize stuff
for (i=0; i<18; i++) {
  for (t=0;t<600;t++) {
    … // do stuff
  }
}

这些循环不会删除任何内容,您也不必从单个计数器计算it的值。

  

让时间成为一个连续的功能

显然,时间仍将在这些步骤中离散化。就像在while循环中一样。如果您不想要离散的时间步长,则必须从根本上改变您的代码,例如:通过计算客户预先到达的时间,然后从事件转到事件而不是固定增量。