银行家算法c银行家算法C++描述
银行家算法c 时间:2022-02-23 阅读:(
)
银行家算法C++描述
#include <iostream> #include <string> #define M 3 //资源的种类数 #define N 5 //进程的个数 void output(int iMax[N][M],int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]); //统一的输出格式 bool safety(int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]); bool banker(int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]); int main() { int i,j; //当前可用每类资源的资源数 int iAvailable[M]={3,3,2}; //系统中N个进程中的每一个进程对M类资源的最大需求 int iMax[N][M]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}}; //iNeed[N][M]每一个进程尚需的各类资源数 //iAllocation[N][M]为系统中每一类资源当前已分配给每一进程的资源数 int iNeed[N][M],iAllocation[N][M]={{0,1,1},{2,0,0},{3,0,2},{2,1,1},{0,0,2}}; //进程名 char cName[N]={'a','b','c','d','e'}; bool bExitFlag=true; //退出标记 char ch; //接收选择是否继续提出申请时传进来的值 bool bSafe; //存放安全与否的标志 //计算iNeed[N][M]的值 for(i=0;i<N;i++) for(j=0;j<M;j++) iNeed[i][j]=iMax[i][j]-iAllocation[i][j]; //输出初始值 output(iMax,iAllocation,iNeed,iAvailable,cName); //判断当前状态是否安全 bSafe=safety(iAllocation,iNeed,iAvailable,cName); //是否继续提出申请 while(bExitFlag) { cout<<"
"<<"继续提出申请?
y为是;n为否。
"; cin>>ch; switch(ch) { case 'y': //cout<<"调用银行家算法"; bSafe=banker(iAllocation,iNeed,iAvailable,cName); if (bSafe) //安全,则输出变化后的数据 output(iMax,iAllocation,iNeed,iAvailable,cName); break; case 'n': cout<<"退出。
"; bExitFlag=false; break; default: cout<<"输入有误,请重新输入:
"; } } } //输出 void output(int iMax[N][M],int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]) { int i,j; cout<<"
Max Allocation Need Available"<<endl; cout<<" A B C A B C A B C A B C"<<endl; for(i=0;i<N;i++) { cout<<cName[i]<<" "; for(j=0;j<M;j++) cout<<iMax[i][j]<<" "; cout<<" "; for(j=0;j<M;j++) cout<<iAllocation[i][j]<<" "; cout<<" "; for(j=0;j<M;j++) cout<<iNeed[i][j]<<" "; cout<<" "; cout<<" "; //Available只需要输出一次 if (i==0) for(j=0;j<M;j++) cout<<iAvailable[j]<<" "; cout<<endl; } } //安全性算法,进行安全性检查;安全返回true,并且输出安全序列,不安全返回false,并输出不安全的提示; bool safety(int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]) { } //定位ch对应的进程名在数组中的位置 //没找见返回-1,否则返回数组下标 int locate(char cName[N],char ch) { int i; for(i=0;i<N;i++) if (cName[i]==ch) //找到 return i; //未找到 return -1; } //提出申请,返回提出申请的进程名对应的下标 int request(char cName[N],int iRequest[M]) { int i,loc; char ch; bool bFlag=true; //判断输入的进程名是否有误 while(bFlag) { //输出进程名 for(i=0;i<N;i++) cout<<cName[i]<<" "; //输入提出申请的进程名 cout<<"
输入提出资源申请的进程名:
"; cin>>ch; //定位ch对应的进程名在进程名数组中的位置 loc=locate(cName,ch); //没找到,重新输入 if (loc==-1) cout<<"
您输入的进程名有误!请重新输入"; //找到,退出循环 else bFlag=false; } //输入提出申请的资源数 cout<<"输入申请各类资源的数量:
"; for(i=0;i<M;i++) cin>>iRequest[i]; //返回提出申请的进程名对应的下标 return loc; } bool banker(int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]) { } 这个是c++的 我的报告
恒创科技也有暑期的活动,其中香港服务器也有一定折扣,当然是针对新用户的,如果我们还没有注册过或者可以有办法注册到新用户的,可以买他们家的香港服务器活动价格,2M带宽香港云服务器317元。对于一般用途还是够用的。 活动链接:恒创暑期活动爆款活动均是针对新用户的。1、云服务器仅限首次购买恒创科技产品的新用户。1 核 1G 实例规格,单个账户限购 1台;其他活动机型,单个账户限购 3 台(必须在一个订单...
无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,自营有国内雅安高防、洛阳BGP企业线路、香港CN2线路、国外服务器产品等,非常适合需要稳定的线路的用户,如游戏、企业建站业务需求和各种负载较高的项目,同时还有自营的高性能、高配置的BGP线路高防物理...
厦门靠谱云股份有限公司 双十一到了,站长我就给介绍一家折扣力度名列前茅的云厂商——萤光云。1H2G2M的高防50G云服务器,依照他们的规则叠加优惠,可以做到12元/月。更大配置和带宽的价格,也在一般云厂商中脱颖而出,性价比超高。官网:www.lightnode.cn叠加优惠:全区季付55折+满100-50各个配置价格表:地域配置双十一优惠价说明福州(带50G防御)/上海/北京1H2G2M12元/月...
银行家算法c为你推荐
时间刻度机械手表的时分针时间刻度都对不准吗?windowsmedia电脑的大部分软件打开方式变为了Windows media center怎么用电脑发短信谁知道怎样能用电脑给手机发短信pps官网pps官方下载,pps播放器下载pps官网pps官方网站下载pps官方正式版下载网站公众号付费阅读目前公众号有没有的付费问答平台可以提供的?上行宽带上行宽带和下行宽带代表什么?qq管家官网腾讯手机管家如何下载QQ手机管家?网络安全密钥一般路由器是网络安全密钥是多少gas是什么意思petrol和gas的区别
网站虚拟主机空间 windows虚机 linuxapache虚拟主机 骨干网 enzu http500内部服务器错误 国外php空间 元旦促销 工作站服务器 免费高速空间 免费申请网站 东莞服务器 空间登录首页 西安主机 双线空间 ledlamp xuni 腾讯数据库 umax 中美互联网论坛 更多