2012-11-15 3 views
-2

나는 3 시간 이상 패스트 푸드 레스토랑을 시뮬레이션 중입니다. 3 시간은 각각 600 초의 18 간격으로 나뉩니다. 각 간격은 600 초에 일어난 일에 대한 통계를 출력합니다.둘 (for 루프)에서 (while 루프)로 변환하는 방법은 무엇입니까?

내 원래의 구조는 다음과 같았다 :

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) 
{ 
... 
} 

루프가 종료 될 때 어떤 조건이 필요한지 잘 모르겠습니다.

이 필요한 경우, 여기 내 전체 코드입니다 : http://pastebin.com/3ec0Ks9u

+0

while() 루프가 종료 될 때의 조건과 관련하여 (t <10800) 확립 된 것입니다. 고객 도착을 해고 할 때, [* modulus *] (http://www.cprogramming.com/tutorial/modulus.html) 단어는 당신에게 어떤 의미입니까? – WhozCraig

+0

참조 문서에서 나누기 및 모듈러스를 찾으십시오. – pmg

+0

저는 모듈러스 함수에 대해 어느 정도 익숙합니다. 프로그램에서 난수를 생성하기 위해 몇 번 사용했습니다. 일반적으로 % a는 a/b의 나머지 부분입니다. – EngGenie

답변

0

, 난, u는 스레드의 도움을 필요 당신이 뭔가 모니터링 할 (단어의 연속 함수를)하려는 problem.If 이해 "할 수있다" 그리고 타이머는 현재 범위를 벗어납니다. 기본적인 것을 사용하고 싶다면 질문을 잘 이해하지 못하기 때문에 다시 구성하십시오.

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 루프에서와 마찬가지입니다. 이산 시간 간격을 원하지 않으면 코드를 근본적으로 변경해야합니다. 고객이 정면에 도착한 시간을 계산 한 다음 고정 된 증분 대신 이벤트에서 스테핑으로 스테핑 할 수 있습니다.

관련 문제