-
大小: 426KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-10
- 語言: 其他
- 標(biāo)簽: 操作系統(tǒng)??課程設(shè)計(jì)??
資源簡(jiǎn)介
此為本人的操作系統(tǒng)課程設(shè)計(jì)--哲學(xué)家就餐,DOS界面,十分簡(jiǎn)潔但卻能夠?qū)崿F(xiàn)哲學(xué)家就餐的問題,強(qiáng)烈推薦大家下載參考!轉(zhuǎn)載請(qǐng)注明出處,謝謝!!

代碼片段和文件信息
//為簡(jiǎn)化操作,進(jìn)程用數(shù)組表示
#include
#define?n?5
int?in=0;
int?out=0;
int?Readcount[n];
int?chopstick[n];//筷子狀態(tài)標(biāo)志
void?Getchopstick(int?nextw)//拿起筷子函數(shù)。?nextw為哲學(xué)家標(biāo)號(hào)
{
printf(“第%d名哲學(xué)家肚子餓了,申請(qǐng)左邊的筷子。\n“nextw);
if(chopstick[nextw-1]==0||chopstick[nextw-1]==nextw)
{
in=nextw-1;
chopstick[in]=nextw;
printf(“申請(qǐng)成功!第%d名哲學(xué)家已經(jīng)拿起左邊一支編號(hào)為%d筷子,申請(qǐng)右邊編號(hào)為%d的筷子。\n“nextwin(in+1)%n);
in=(in+1)%n;
Readcount[nextw-1]=Readcount[nextw-1]+1;
if(chopstick[in]==0||chopstick[in]==nextw)
{
chopstick[in]=nextw;
Readcount[nextw-1]=Readcount[nextw-1]+1;
???printf(“申請(qǐng)成功!第%d名哲學(xué)家再拿起右邊一支編號(hào)為%d筷子,開開心心的吃飯啦!\n“nextwin);
}
?else?printf(“申請(qǐng)失敗!第%d名哲學(xué)家只有一支筷子,只好干巴巴的盼著旁邊的那位哲學(xué)家趕快吃完。\n“nextw);
}
else?printf(“申請(qǐng)失敗!第%d名哲學(xué)家沒有拿到筷子,只好干巴巴的等著旁邊的那位哲學(xué)家趕快吃完。\n“nextw);
}
void?Dropchopstick(int?nextr)//放下筷子函數(shù)。?
{
//?nextr為放下筷子的哲學(xué)家的編號(hào)
if(Readcount[nextr-1]!=0)//判斷筷子是否已經(jīng)占用
{
if(Readcount[nextr-1]==2)?
{
printf(“該名哲學(xué)家吃飽啦!準(zhǔn)備放下筷子。。\n“);
????????????chopstick[nextr-1]=0;
chopstick[nextr]=0;
printf(“該名哲學(xué)家已經(jīng)放下筷子。。\n“);
}
????????else?{
printf(“該名哲學(xué)家只有一支筷子!又不能吃飯,只好準(zhǔn)備放下筷子。。\n“);
?????????????chopstick[nextr-1]=0;
?printf(“該名哲學(xué)家已經(jīng)放下筷子。。\n“);
}
}
?else?printf(“該名哲學(xué)家沒有筷子你還讓他放下。。你好壞啊~\n“);
}
int?select()
{
int?inextwnextr;
printf(“請(qǐng)輸入編號(hào):\n1---拿筷子過程\n2---放筷子過程\n3---退出\n“);
scanf(“%d“&i);
switch(i)
{
case?1:
printf(“現(xiàn)在進(jìn)行哲學(xué)家拿筷子過程,請(qǐng)輸入要申請(qǐng)筷子的哲學(xué)家編號(hào)(1-5)。\n“);
scanf(“%d“&nextw);
if((nextw>0)&&(nextw<6))
{
Getchopstick(nextw);//拿筷子過程
}
else?{printf(“輸入超出范圍請(qǐng)重新輸入!“);}
break;
case?2:printf(“現(xiàn)在進(jìn)行哲學(xué)家放筷子過程,請(qǐng)輸入要放筷子的哲學(xué)家編號(hào)(1-5)。\n“);
scanf(“%d“&nextr);
if((nextr>0)&&(nextr<6))
{
Dropchopstick(nextr);//放筷子過程
}
else?{printf(“輸入超出范圍請(qǐng)重新輸入!\n“);}
break;
case?3:return(0);
default:printf(“輸入超出范圍請(qǐng)重新輸入.\n“);
scanf(“%d“&i);
}
return(1);
}
int?main()//主函數(shù)操作
{
???printf(“哲學(xué)家就餐問題。\n規(guī)則:每個(gè)人只有申請(qǐng)到了左邊的筷子才可以申請(qǐng)右邊的筷子。\n“);
???for(int?m=0;m {
??????chopstick[m]=0;
???}
???for(int?c=0;c ???{
???Readcount[c]=0;
???}
int?i;
printf(“請(qǐng)輸入編號(hào):\n1---拿放筷子操作\n2---退出\n“);
scanf(“%d“&i);
while(i!=2)
{
?select();
?printf(“\n“);
?printf(“請(qǐng)輸入編號(hào):\n1---拿放筷子操作\n2---退出\n“);
?printf(“\n“);
scanf(“%d“&i);
}
return(1);
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????168033??2010-01-05?22:14??哲學(xué)家就餐\哲學(xué)家進(jìn)餐問題.exe
?????文件???????2740??2009-12-31?17:23??哲學(xué)家就餐\哲學(xué)家進(jìn)餐問題.cpp
?????文件?????482304??2010-01-05?23:02??哲學(xué)家就餐\操作系統(tǒng)課程設(shè)計(jì)報(bào)告-吳毅-070806110015.doc
?????目錄??????????0??2010-01-05?22:26??哲學(xué)家就餐
-----------?---------??----------?-----??----
???????????????653077????????????????????4
評(píng)論
共有 條評(píng)論