银行家算法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++的 我的报告
PacificRack最近促销上瘾了,活动频繁,接二连三的追加便宜VPS秒杀,PacificRack在 7月中下旬已经推出了五款秒杀VPS套餐,现在商家又新增了三款更便宜的特价套餐,年付低至7.2美元,这已经是本月第三波促销,带宽都是1Gbps。PacificRack 7月秒杀VPS整个系列都是PR-M,也就是魔方的后台管理。2G内存起步的支持Windows 7、10、Server 2003\20...
云步云怎么样?云步云是创建于2021年的品牌,主要从事出售香港vps、美国VPS、日本VPS、香港独立服务器、香港站群服务器等,机房有香港、美国、日本东京等机房,目前在售VPS线路有CN2+BGP、CN2 GIA,香港的线路也是CN2直连大陆,该公司旗下产品均采用KVM虚拟化架构。目前,云步云提供香港安畅、沙田、大浦、葵湾、将军澳、新世界等CN2机房云服务器,2核2G5M仅72.5元/月起。点击进...
vpsdime上了新产品系列-Windows VPS,配置依旧很高但是价格依旧是走低端线路。或许vpsdime的母公司Nodisto IT想把核心产品集中到vpsdime上吧,当然这只是站长个人的猜测,毕竟winity.io也是专业卖Windows vps的,而且也是他们自己的品牌。vpsdime是一家新上来不久的奇葩VPS提供商,实际是和backupspy以及crowncloud等都是同一家公司...
银行家算法c为你推荐
ico监管为何央行叫停代币发行?动态图片格式动态图片什么格式上行宽带上行宽带是什么?java程序员招聘女java程序员好找工作嘛网站客服代码怎么在网页用HTML代码设置QQ客服腾讯合作伙伴大会如何成为腾讯渠道合作伙伴?gbk内码高考姓名gbk内码查询彩信平台目前国内有哪些短信平台服务商,怎么排名?空间导航QQ空间中如何自定义导航?backupexecBackup Exec 2014怎么备份Exchange
北京vps 香港ufo hostgator 256m内存 directadmin http500内部服务器错误 一元域名 中国特价网 稳定免费空间 国外免费asp空间 卡巴斯基免费试用 hkt 上海服务器 宏讯 免费asp空间 腾讯服务器 建站技术 websitepanel e-mail 美国vpn服务器 更多