-2

我正在模拟三个多小时的快餐店。这三个小时分为 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

4

2 回答 2

0

[…] 当第二个间隔开始时,一切都被删除了。

这不是由于两个for循环,而是由于外部for循环调用了一个函数,并且您重新初始化了该函数中的内容。因此,将外部for循环移动函数中interval(可能会在此过程中更改方法名称,因为它不再适合)。在那种方法中,您可以编写

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

这些循环不会删除任何内容,您也不必计算某个计数器的值i和值。t

让时间成为一个连续函数

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

于 2012-11-16T08:50:00.270 回答
0

“可能是”,我理解你的问题。如果你想监控某些东西(用你的话来说是连续功能),你需要借助线程和计时器,这暂时超出了你的范围。如果你想使用一些东西基本的,问题不是很好理解,请重新构建它。

于 2012-11-15T16:53:19.200 回答