C질문 있습니다. Circular Queue.c의 Enqueue의 pq-PER의 값을 Hamburgersim.c에서 쓰고 싶을떄...
흰꽃
////////////// Circular Queue.c//////////////////////////////////////////////
#include stdio.h
#include stdlib.h
#include CircularQueue.h
void QueueInit(Queue * pq)
{
pq-front = 0;
pq-rear = 0;
}
void ERInit(Queue * pq)
{
pq-ER =0;
pq-NER =0;
}
int QIsEmpty(Queue * pq)
{
if(pq-front == pq-rear)
return TRUE;
else
return FALSE;
}
int NextPosIdx(int pos)
{
if(pos == QUE_LEN-1)
return 0;
else
return pos+1;
}
void Enqueue(Queue * pq, Data data)
{
if(NextPosIdx(pq-rear) == pq-front)
{
printf(Queue Memory Error!1\n);
pq - NER ++;
pq-PER = (pq-ER) / ((pq-NER)+(pq-ER)) * 100;
printf(ER = %f\n, pq-ER);//주문 받은 손님수
printf(NER = %f\n, pq-NER);//주문 받지못한 손님수
printf(PER = %f%%\n\n, pq-PER );//%로 계산 //이것을//
//exit(-1);
}
pq-rear = NextPosIdx(pq-rear);
pq-queArr[pq-rear] = data;
pq - ER ++;
pq-PER = (pq-ER) / ((pq-NER)+(pq-ER)) * 100;
printf(ER = %f\n, pq-ER);//주문 받은 손님수
printf(NER = %f\n, pq-NER);//주문 받지못한 손님수
printf(PER = %f%%\n\n, pq-PER );//%로 계산
}
Data Dequeue(Queue * pq)
{
if(QIsEmpty(pq))
{
//printf(Queue Memory Error!2\n);
//exit(-1);
}
pq-front = NextPosIdx(pq-front);
return pq-queArr[pq-front];
}
Data QPeek(Queue * pq)
{
if(QIsEmpty(pq))
{
printf(Queue Memory Error!3\n);
//exit(-1);
}
return pq-queArr[NextPosIdx(pq-front)];
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////Hamburgersim.c//////////////////////////////////////////////
#include stdio.h
#include stdlib.h
#include time.h
#include CircularQueue.h
#defineCUS_COME_TERM15// 고객의 주문 간격: 초 단위
#define CHE_BUR0// 치즈버거 상수
#define BUL_BUR1// 불고기버거 상수
#define DUB_BUR2// 더블버거 상수
#define CHE_TERM12// 치즈버거 제작 시간: 초 단위
#define BUL_TERM15// 불고기버거 제작 시간: 초 단위
#define DUB_TERM24// 더블버거 제작 시간: 초 단위
int main(void)
{
int makeProc=0;// 햄버거 제작 진행상황
int cheOrder=0, bulOrder=0, dubOrder=0;
int sec;
int count;
int cout;
Queue que;
QueueInit(&que);
ERInit(&que);//수정
srand(time(NULL));
cout=1;
//for(count=0; count1000; count++)
//{
cheOrder=0;
bulOrder=0;
dubOrder=0;
cheOrder=0;
bulOrder=0;
dubOrder=0;
sec=0;
makeProc=0;
// 아래 for문의 1회 회전은 1초의 시간 흐름을 의미함
for(sec=0; sec3600; sec++)
{
if(sec % CUS_COME_TERM == 0)
{
switch(rand() % 3)
{
case CHE_BUR:
Enqueue(&que, CHE_TERM);
cheOrder += 1;
break;
case BUL_BUR:
Enqueue(&que, BUL_TERM);
bulOrder += 1;
break;
case DUB_BUR:
Enqueue(&que, DUB_TERM);
dubOrder += 1;
break;
}
}
if(makeProc=0 && !QIsEmpty(&que))
makeProc = Dequeue(&que);
makeProc--;
}
prinbsp;printf(Simulation Report! \n, QUE_LEN);
printf( - Cheese burger: %d \n, cheOrder);
printf( - Bulgogi burger: %d \n, bulOrder);
printf( - Double burger: %d \n, dubOrder);
printf( - Waiting room size: %d \n, QUE_LEN);
printf(cout %d \n, cout);//수정
cout++;
printf(%f%%\n,pq-PER);//이곳으로...//
//}//수정
return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////CircularQueue.h////////////////////////////////////////
#ifndef __C_QUEUE_H__
#define __C_QUEUE_H__
#define TRUE1
#define FALSE0
#define QUE_LEN30
typedef int Data;
typedef struct _cQueue
{
int front;
int rear;
float ER;//주문 못받은 손님수
float NER;//주문 받은 손님수
float PER;//확률 계산
Data queArr[QUE_LEN];
} CQueue;
typedef CQueue Queue;
void QueueInit(Queue * pq);
void ERInit(Queue * pq);//수정
int QIsEmpty(Queue * pq);
void Enqueue(Queue * pq, Data data);
Data Dequeue(Queue * pq);
Data QPeek(Queue * pq);
#endif
///////////////////////////////////////////////////////////////////////////////////
Circular Queue.c의 Enqueue의 pq-PER의 값을 Hamburgersim.c에서 변수를 받아 쓰고 싶은데
어떻게 해야 Circular Queue.c의 pq-PER변수를 Hamburgersim.c에서 받을 수 있나요??
-
햇님
감사합니다.
-
해지개
pq-PER 이걸 que.PER로 변경하셔야 접근이 가능하고요
계산식은 완성하셔야 할거같습니다
무슨말이냐면, enqueue에서 매번 계산했던 PER을 전체 enqueue상황을 마치고 맨 마지막에 한번만 계산하고자 하신거 같으니 적절한 계산값을 수행하셔야하고
main()문에서 queue structure에 접근하시려고 할 경우엔 Queue que;에 영향을 받으므로
- 가아닌 .으로 해야 각 변수들에 접근이 가능합니다~
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |
2691510 | sizeof 연산자 질문입니다 (2) | 종달 | 2025-04-14 |
2691483 | 파일 오픈시 에러 질문드립니다. (2) | 호습다 | 2025-04-14 |
2691450 | [visual c++ 툴]기초 질문 (3) | 해긴 | 2025-04-13 |