银行家算法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++的 我的报告

RackNerd提供四款高配美国服务器促销活动低至月$189

RackNerd 商家给的感觉就是一直蹭节日热点,然后时不时通过修改配置结构不断的提供低价年付的VPS主机,不过他们家还是在做事的,这么两年多的发展,居然已经有新增至十几个数据中心,而且产品线发展也是比较丰富。比如也有独立服务器业务,不过在他们轮番的低价年付VPS主机活动下,他们的服务器估摸着销路不是太好的。这里,今天有看到RackNerd商家的独立服务器业务有促销。这次提供美国多个机房的高配独立...

标准互联(450元)襄阳电信100G防御服务器 10M独立带宽

目前在标准互联这边有两台香港云服务器产品,这不看到有通知到期提醒才关注到。平时我还是很少去登录这个服务商的,这个服务商最近一年的促销信息比较少,这个和他们的运营策略有关系。已经从开始的倾向低价和个人用户云服务器市场,开始转型到中高端个人和企业用户的独立服务器。在这篇文章中,有看到标准互联有推出襄阳电信高防服务器100GB防御。有三款促销方案我们有需要可以看看。我们看看几款方案配置。型号内存硬盘IP...

OneTechCloud(31元),美国CN2 GIA高防VPS月

OneTechCloud发布了本月促销信息,全场VPS主机月付9折,季付8折,优惠后香港VPS月付25.2元起,美国CN2 GIA线路高防VPS月付31.5元起。这是一家2019年成立的国人主机商,提供VPS主机和独立服务器租用,产品数据中心包括美国洛杉矶和中国香港,Cera的机器,VPS基于KVM架构,采用SSD硬盘,其中美国洛杉矶回程CN2 GIA,可选高防。下面列出部分套餐配置信息。美国CN...

银行家算法c为你推荐
snake模型什么是S-L头模型?公众号付费阅读怎么利用公众号做知识付费?音乐代码在html中插入mp3音频的代码是什么空间导航怎么把空间的导航变成只有留言板跟相册particular教程AE的particular的particle设置微盟价格微盟渠道代理政策是怎么样的?ps5教程跪求PS5 教程android_secure内存卡上.android_secure是什么意思android权限大全android 6.0哪些权限需要请求学习黑客技术怎样学习黑客?学习黑客技术应该从什么开始?
naning9韩国官网 securitycenter 256m内存 suspended xfce 免费静态空间 e蜗 赞助 idc是什么 共享主机 美国网站服务器 空间技术网 web服务器安全 国外的代理服务器 工信部网站备案查询 永久免费空间 带宽测试 上海联通 香港ip 架设代理服务器 更多