银行家算法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++的 我的报告
Webhosting24是一家始于2001年的意大利商家,提供的产品包括虚拟主机、VPS、独立服务器等,可选数机房包括美国洛杉矶、迈阿密、纽约、德国慕尼黑、日本、新加坡、澳大利亚悉尼等。商家VPS主机采用AMD Ryzen 9 5950X CPU,NVMe磁盘,基于KVM架构,德国机房不限制流量,网站采用欧元计费,最低年付15欧元起。这里以美国机房为例,分享几款套餐配置信息。CPU:1core内存...
小白云是一家国人自营的企业IDC,主营国内外VPS,致力于让每一个用户都能轻松、快速、经济地享受高端的服务,成立于2019年,拥有国内大带宽高防御的特点,专注于DDoS/CC等攻击的防护;海外线路精选纯CN2线路,以确保用户体验的首选线路,商家线上多名客服一对一解决处理用户的问题,提供7*24无人全自动化服务。商家承诺绝不超开,以用户体验为中心为用提供服务,一直坚持主打以产品质量用户体验性以及高效...
关于CYUN商家在之前有介绍过一次,CYUN是香港蓝米数据有限公司旗下的云计算服务品牌,和蓝米云、蓝米主机等同属该公司。商家主要是为个人开发者用户、中小型、大型企业用户提供一站式核心网络云端部署服务,促使用户云端部署化简为零,轻松快捷运用云计算。目前,CYUN主要运营美国、香港、台湾、日本、韩国CN2线路产品,包括云服务器、站群服务器和独立服务器等。这次看到CYUN夏季优惠活动发布了,依然是熟悉的...
银行家算法c为你推荐
贸易配额国际贸易中什么是配额租财务系统软件现在企业里一般用什么财务软件的啊4k超高清视频下载哪里有4K片源下载啊?补充:刚入手了一个4k电视盒,小美盒子V9,说是支持4k。正好我的电视机是4k的,想知道哪里有得下载呢?有朋友说我傻,现在基本上没有4k片源下载,而且不知道什么时候才有。等到流行的时候也许这个机器又淘汰啦!我该怎么办啊?scriptmanagerScriptManager是什么listviewitem安卓如何添加Listview的item?webservice框架java Webservice都有哪几种方式啊,哪种方式比较好啊上行宽带上行宽带和下行宽带什么意思音乐代码在html中插入mp3音频的代码是什么全局钩子delphi 键盘全局钩子腾讯合作伙伴大会腾讯位置服务是什么?
欧洲欧洲vps 个人域名备案 hkbn lunarpages 新加坡服务器 webhostingpad 博客主机 typecho 好看的桌面背景图 湖南服务器托管 京东商城双十一活动 免费个人空间 可外链相册 服务器托管什么意思 爱奇艺vip免费试用7天 傲盾官网 鲁诺 服务器监测 常州联通宽带 上海电信测速网站 更多