Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将两个(for循环)转换为一个(while循环)?_C_Loops_For Loop_While Loop_Simulation - Fatal编程技术网

C 如何将两个(for循环)转换为一个(while循环)?

C 如何将两个(for循环)转换为一个(while循环)?,c,loops,for-loop,while-loop,simulation,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循环的方法不起作用,因为它不允许时间成为连续函数。如果事件发生如中所

我在模拟一家快餐店三个多小时。三个小时分为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循环需要什么条件


如果有必要,这里是我的完整代码:

可能是,我理解你的问题。如果你想用你的话来监视某个连续的函数,你需要借助线程和计时器,这在你的范围之外。如果你想用一些基本的东西,这个问题不太清楚,请重新构造它

[…]第二次间隔开始时,所有内容都将被删除

这不是因为两个for循环,而是因为外部for循环调用一个函数,然后重新初始化该函数中的内容。因此,将外部for循环移动到函数间隔中,可能会改变方法名称,因为它不再适合。用那种方法你可以写

int i, t;
… // initialize stuff
for (i=0; i<18; i++) {
  for (t=0;t<600;t++) {
    … // do stuff
  }
}
这些循环不会擦除任何内容,也不必从某个计数器计算i和t的值

允许时间是一个连续的函数


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

关于while循环退出的条件,你们已经在你们的参考文件中建立了除法和模,我对模函数有点熟悉。我已经在程序中多次使用它来生成随机数。一般来说,a%b是a/b的剩余部分。我们就快到了,但您将不得不使用比连续函数更多的词来描述您要做的事情