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;에 영향을 받으므로
- 가아닌 .으로 해야 각 변수들에 접근이 가능합니다~
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2698938 | c언어 메모리질문 (3) | 나래 | 2025-06-21 |
2698909 | 서비스 요청 고객 관리 프로그램 짜는것좀 도와주세요ㅜㅜ (4) | 궁수자리 | 2025-06-21 |
2698882 | 프로그래밍좀 짜주세요 (3) | 황예 | 2025-06-21 |
2698855 | 카프-라빈 알고리즘 코딩 분석좀 도와주세요.. | 꽃봄 | 2025-06-20 |
2698829 | 학점계산기 (7) | MyWay | 2025-06-20 |
2698782 | 기초적인 함수 질문이요ㅠㅠㅠㅠ | 내담 | 2025-06-20 |
2698749 | 프로그램 짜던 도중 패닉입니다...ㅜ | 파랑 | 2025-06-19 |
2698719 | 조건부컴파일 질문입니다.~ (2) | 큐트 | 2025-06-19 |
2698693 | 재귀 함수 에러 | 바닐라 | 2025-06-19 |
2698673 | 고민이있는데 들어좀주세요!! (1) | 초코맛캔디 | 2025-06-19 |
2698644 | 1부터 n까지의 합을 구하는데 엄청긴숫자의 합을 구할때는 어떻게 해야하나요? (4) | 슬우 | 2025-06-18 |
2698616 | 다른 함수로 안넘어갑니다..;;; | 도1도캣 | 2025-06-18 |
2698587 | 배열하다 막혀서... (3) | WhiteCat | 2025-06-18 |
2698559 | 문자열을 비우는방법 (2) | 하늘 | 2025-06-18 |
2698528 | 착하고 친절한 선생씌구해염~ㅋㅋ (4) | 옆집언니야 | 2025-06-17 |
2698502 | 자료구조 큐 | 캔서 | 2025-06-17 |
2698477 | 실행화면 배경문의요 | 선아 | 2025-06-17 |
2698430 | 변수의 값이 저장이 않되네요;; (4) | 피네 | 2025-06-16 |
2698404 | C#을 배울려고 하는데 C나 C++을 알아야 하나요 ?? (1) | 신당 | 2025-06-16 |
2698342 | 프로그램 질문점녀 (4) | 데빌의눈물 | 2025-06-16 |