资源简介
此为本人的操作系统课程设计--哲学家就餐,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
相关资源
- 2ASK调制解调系统的设计(通信原理课
- vfp课程设计员工工资信息管理系统
- 计算机网络课程设计 集团网络
- 据结构hash查找课程设计
- 操作系统-基本分页存储管理(内有代
- 模拟操作系统 os 进程 设备 磁盘 文件
- EDA 基于quartus平台制作的步行街自助式
- cug蒋良孝模式识别课程报告
- 北京化工大学操作系统上机源码八个
- 全国交通咨询模拟数据结构课程设计
- 利用栈求表达式课程设计
- 操作系统 多级目录管理
- 操作系统 文件存储空间管理
- 数据结构课程设计——压缩软件Huff
- 基于P2P技术的局域网聊天工具
- 电阻炉温度控制系统的设计
- 编程演示三种存储管理方式的地址换
- 贪吃蛇-代码-uml设计
- 数字频率计EDA课程设计
- pintos project2 源码
- 模拟设计动态分区存储管理的分配与
- 教务管理系统之子系统---系内课程安
- 操作系统页面内存页面置换算法OPT、
- Linux操作系统基础教程
- 计算机操作系统第四版(汤小丹等编
- 微机控制课程设计 温度控制系统
- 计算机网络课程设计 利用cisco模拟软
- CA6140拨叉831006课程设计全套
- 学院球员管理系统 我们的课程设计报
- 计算机操作系统第四版课后答案
评论
共有 条评论