银行家算法-C++源程序[1]_第1页
银行家算法-C++源程序[1]_第2页
银行家算法-C++源程序[1]_第3页
银行家算法-C++源程序[1]_第4页
银行家算法-C++源程序[1]_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include stdafx.h#include#include#include#include#include#includeconst int max_p=20;const int maxa=10; /定义 a 类资源的数量 const int maxb=5;const int maxc=7;typedef struct nodeint a;int b;int c;int remain_a;int remain_b;int remain_c;bank;typedef struct node1char name20;int a;int b;int c;int need_a;int need

2、_b;int need_c;process;bank banker;process processesmax_p;int quantity;/初始化函数void initial()int i;banker.a=maxa;banker.b=maxb;banker.c=maxc;banker.remain_a=maxa;banker.remain_b=maxb;banker.remain_c=maxc;for(i=0;imax_p;i+)strcpy(,);processesi.a=0;processesi.b=0;processesi.c=0;processesi.

3、need_a=0;processesi.need_b=0;processesi.need_c=0;/新加作业void add()char name20;int flag=0;int t;int need_a,need_b,need_c;int i;coutendl;cout新加作业endl;coutendl; coutname;for(i=0;iquantity;i+)if(!strcmp(,name)flag=1;break;if(flag)cout错误,作业已存在endl;elsecoutneed_a;coutneed_b;coutneed_c;t=1;cou

4、tneed_abanker.remain_a)cout错误,所需 a 类资源大于银行家所剩 a 类资源banker.remain_b)cout错误,所需 b 类资源大于银行家所剩 b 类资源banker.remain_c)cout错误,所需 c 类资源大于银行家所剩 c 类资源endl; t=0;if(t)strcpy(,name);processesquantity.need_a=need_a;processesquantity.need_b=need_b;processesquantity.need_c=need_c;quantity+;cout

5、新加作业成功endl;elsecout新加作业失败endl;/为作业申请资源void bid()char name20;int i,p;int a,b,c;int flag;coutendl为作业申请资源endl;coutendl; coutname;p=-1;for(i=0;iquantity;i+)if(!strcmp(,name)p=i;break;if(p!=-1)couta;coutb;coutc;flag=1;if(abanker.remain_a)|(aprocessesp.need_a-processesp.a)cout错误,所申请 a 类资源大于

6、银行家所剩 a 类资源或该进程还需数量banker.remain_b)|(bprocessesp.need_b-processesp.b)cout错误,所申请 b 类资源大于银行家所剩 b 类资源或该进程还需数量banker.remain_c)|(cprocessesp.need_c-processesp.c)cout错误,所申请 c 类资源大于银行家所剩 c 类资源或该进程还需数量endl; flag=0;if(flag)banker.remain_a-=a;banker.remain_b-=b;banker.remain_c-=c;processesp.a+=a; processesp.b

7、+=b;processesp.c+=c;cout为作业申请资源成功endl;elsecout为作业申请资源失败endl;elsecout该作业不存在endl;/撤消作业void finished()char name20;int i,p;coutendl撤消作业endl;coutendl; coutname;p=-1;for(i=0;iquantity;i+)if(!strcmp(,name)p=i;break;if(p!=-1)banker.remain_a+=processesp.a;banker.remain_b+=processesp.b;banker.r

8、emain_c+=processesp.c;for(i=p;iquantity-1;i+)processesi=processesi+1;strcpy(,);processesquantity-1.a=0;processesquantity-1.b=0;processesquantity-1.c=0;processesquantity-1.need_a=0; processesquantity-1.need_b=0; processesquantity-1.need_c=0;quantity-;cout撤消作业成功endl;elsecout撤消作

9、业失败endl;/查看资源情况void view()int i;coutendl查看资源情况endl;coutendl; cout银行家所剩资源(剩余资源/总共资源)endl;couta 类:banker.remain_a/banker.a;cout b 类:banker.remain_b/banker.b;cout c 类:banker.remain_c/banker.c;coutendlendl作业占用情况(已占用资源/所需资源)endl0)for(i=0;iquantity;i+)cout作业名:endl;couta 类:processesi.a/proce

10、ssesi.need_a;cout b 类:processesi.b/processesi.need_b;cout c 类:processesi.c/processesi.need_c;coutendl;elsecout当前没有作业endl;/显示版权信息函数void version()coutendlendl;coutvoid main()银 行 家 算 法endl;int chioce;int flag=1;initial();version();while(flag)coutendl; cout1.新加作业 2.为作业申请资源 3.撤消作业endl;cout4.查看资源情况 0.退出系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论