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;에 영향을 받으므로
- 가아닌 .으로 해야 각 변수들에 접근이 가능합니다~
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |
2675356 | 2진수를 10진수로 바꾸려고 하는데 막히네요.. | 풀잎 | 2024-11-17 |
2675297 | Prity 비트 발생기 | 한란 | 2024-11-16 |
2675249 | C책 좀 추천해 주세요 (2) | 딸기우유 | 2024-11-16 |