资源简介
此为本人的操作系统课程设计--哲学家就餐,DOS界面,十分简洁但却能够实现哲学家就餐的问题,强烈推荐大家下载参考!转载请注明出处,谢谢!!

代码片段和文件信息
//为简化操作,进程用数组表示
#include
#define n 5
int in=0;
int out=0;
int Readcount[n];
int chopstick[n];//筷子状态标志
void Getchopstick(int nextw)//拿起筷子函数。 nextw为哲学家标号
{
printf(“第%d名哲学家肚子饿了,申请左边的筷子。\n“nextw);
if(chopstick[nextw-1]==0||chopstick[nextw-1]==nextw)
{
in=nextw-1;
chopstick[in]=nextw;
printf(“申请成功!第%d名哲学家已经拿起左边一支编号为%d筷子,申请右边编号为%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(“申请成功!第%d名哲学家再拿起右边一支编号为%d筷子,开开心心的吃饭啦!\n“nextwin);
}
else printf(“申请失败!第%d名哲学家只有一支筷子,只好干巴巴的盼着旁边的那位哲学家赶快吃完。\n“nextw);
}
else printf(“申请失败!第%d名哲学家没有拿到筷子,只好干巴巴的等着旁边的那位哲学家赶快吃完。\n“nextw);
}
void Dropchopstick(int nextr)//放下筷子函数。
{
// nextr为放下筷子的哲学家的编号
if(Readcount[nextr-1]!=0)//判断筷子是否已经占用
{
if(Readcount[nextr-1]==2)
{
printf(“该名哲学家吃饱啦!准备放下筷子。。\n“);
chopstick[nextr-1]=0;
chopstick[nextr]=0;
printf(“该名哲学家已经放下筷子。。\n“);
}
else {
printf(“该名哲学家只有一支筷子!又不能吃饭,只好准备放下筷子。。\n“);
chopstick[nextr-1]=0;
printf(“该名哲学家已经放下筷子。。\n“);
}
}
else printf(“该名哲学家没有筷子你还让他放下。。你好坏啊~\n“);
}
int select()
{
int inextwnextr;
printf(“请输入编号:\n1---拿筷子过程\n2---放筷子过程\n3---退出\n“);
scanf(“%d“&i);
switch(i)
{
case 1:
printf(“现在进行哲学家拿筷子过程,请输入要申请筷子的哲学家编号(1-5)。\n“);
scanf(“%d“&nextw);
if((nextw>0)&&(nextw<6))
{
Getchopstick(nextw);//拿筷子过程
}
else {printf(“输入超出范围请重新输入!“);}
break;
case 2:printf(“现在进行哲学家放筷子过程,请输入要放筷子的哲学家编号(1-5)。\n“);
scanf(“%d“&nextr);
if((nextr>0)&&(nextr<6))
{
Dropchopstick(nextr);//放筷子过程
}
else {printf(“输入超出范围请重新输入!\n“);}
break;
case 3:return(0);
default:printf(“输入超出范围请重新输入.\n“);
scanf(“%d“&i);
}
return(1);
}
int main()//主函数操作
{
printf(“哲学家就餐问题。\n规则:每个人只有申请到了左边的筷子才可以申请右边的筷子。\n“);
for(int m=0;m {
chopstick[m]=0;
}
for(int c=0;c {
Readcount[c]=0;
}
int i;
printf(“请输入编号:\n1---拿放筷子操作\n2---退出\n“);
scanf(“%d“&i);
while(i!=2)
{
select();
printf(“\n“);
printf(“请输入编号:\n1---拿放筷子操作\n2---退出\n“);
printf(“\n“);
scanf(“%d“&i);
}
return(1);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 168033 2010-01-05 22:14 哲学家就餐\哲学家进餐问题.exe
文件 2740 2009-12-31 17:23 哲学家就餐\哲学家进餐问题.cpp
文件 482304 2010-01-05 23:02 哲学家就餐\操作系统课程设计报告-吴毅-070806110015.doc
目录 0 2010-01-05 22:26 哲学家就餐
----------- --------- ---------- ----- ----
653077 4
相关资源
- FTP课程设计(服务端+客户端)
- 升腾Win终端系统升级方法新版.doc
- railroad铁路CAD生成
- ISE_14.7_license.lic
- Uninstall_Cortana_WINCLIENT.CN.rar
- ANSYS LS-DYNA
- phong模型(简单光照模型)
- 编译原理实验工具及参考源码(lex&
- Python全栈学习笔记面向对象大作业:
- 高频电子线路课程设计报告收音机
- 直流稳压电源的课程设计、安装及调
- EDA课程设计_密码锁
- 教室管理系统.rar
- STM32基于rt_thread操作系统的SDHC卡文件
- 单片机课程设计 篮球计分器
- 数据结构课程设计 6 1 彩票系统
- 端口扫描课程设计详细的报告
- 步进电机课程设计(个人设计)
- 校园网络规划与设计课程设计
- 编译原理课程设计:词法语法编译器
- 操作系统 LRU算法 实验报告 及 程序代
-
simuli
nk 课程设计 qpsk - 武汉理工大学 单片机课程设计 16*16点
- [免费]车载CE6.0操作系统
- 数据库VFP课程设计
- 分页系统模拟实验 操作系统 课程设
- 课程作业:模拟仓库管理系统
- 模拟段页式虚拟存储管理中地址转换
- 硬件课程设计—流水灯(quartus软件
- 超市收银系统eclipse access大学课程设计
评论
共有 条评论