银行家算法c求C语言银行家 算法 "流程图"

银行家算法c  时间:2022-02-23  阅读:()

求C语言银行家 算法 "流程图"

#include<stdio.h> #include<string.h> #include<iostream> #include<stdlib.h> #include<iomanip> #include<conio.h> using namespace std; const int MAX_P=20; const int MAXA=10; //定义A类资源的数量 const int MAXB=5; const int MAXC=7; typedef struct node{ int a; int b; int c; int remain_a; int remain_b; int remain_c; }bank; typedef struct node1{ char name[20]; int a; int b; int c; int need_a; int need_b; int need_c; }process; bank banker; process processes[MAX_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;i<MAX_P;i++){ strcpy(processes[i].name,""); processes[i].a=0; processes[i].b=0; processes[i].c=0; processes[i].need_a=0; processes[i].need_b=0; processes[i].need_c=0; } } //新加作业 void add() { char name[20]; int flag=0; int t; int need_a,need_b,need_c; int i; cout<<endl; cout<<"新加作业"<<endl; cout<<"━━e68a84e79fa5e9819331333236356539━━━━━━━━━━━━━━━━━━━━━━━━━━"<<endl; cout<<"请输入新加作业名:"; cin>>name; for(i=0;i<quantity;i++){ if(!strcmp(processes[i].name,name)){ flag=1; break; } } if(flag){ cout<<"错误,作业已存在"<<endl; } else{ cout<<"本作业所需A类资源:"; cin>>need_a; cout<<"本作业所需B类资源:"; cin>>need_b; cout<<"本作业所需C类资源:"; cin>>need_c; t=1; cout<<need_a<<banker.remain_a; if(need_a>banker.remain_a){ cout<<"错误,所需A类资源大于银行家所剩A类资源"<<endl; t=0; } if(need_b>banker.remain_b){ cout<<"错误,所需B类资源大于银行家所剩B类资源"<<endl; t=0; } if(need_c>banker.remain_c){ cout<<"错误,所需C类资源大于银行家所剩C类资源"<<endl; t=0; } if(t){ strcpy(processes[quantity].name,name); processes[quantity].need_a=need_a; processes[quantity].need_b=need_b; processes[quantity].need_c=need_c; quantity++; cout<<"新加作业成功"<<endl; } else{ cout<<"新加作业失败"<<endl; } } } //为作业申请资源 void bid() { char name[20]; int i,p; int a,b,c; int flag; cout<<endl<<"为作业申请资源"<<endl; cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<<endl; cout<<"要申请资源的作业名:"; cin>>name; p=-1; for(i=0;i<quantity;i++){ if(!strcmp(processes[i].name,name)){ p=i; break; } } if(p!=-1){ cout<<"该作业要申请A类资源数量:"; cin>>a; cout<<"该作业要申请B类资源数量:"; cin>>b; cout<<"该作业要申请C类资源数量:"; cin>>c; flag=1; if((a>banker.remain_a)||(a>processes[p].need_a-processes[p].a)){ cout<<"错误,所申请A类资源大于银行家所剩A类资源或该进程还需数量"<<endl; flag=0; } if((b>banker.remain_b)||(b>processes[p].need_b-processes[p].b)){ cout<<"错误,所申请B类资源大于银行家所剩B类资源或该进程还需数量"<<endl; flag=0; } if((c>banker.remain_c)||(c>processes[p].need_c-processes[p].c)){ cout<<"错误,所申请C类资源大于银行家所剩C类资源或该进程还需数量"<<endl; flag=0; } if(flag){ banker.remain_a-=a; banker.remain_b-=b; banker.remain_c-=c; processes[p].a+=a; processes[p].b+=b; processes[p].c+=c; cout<<"为作业申请资源成功"<<endl; } else{ cout<<"为作业申请资源失败"<<endl; } } else{ cout<<"该作业不存在"<<endl; } } //撤消作业 void finished() { char name[20]; int i,p; cout<<endl<<"撤消作业"<<endl; cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<<endl; cout<<"要撤消作业名:"; cin>>name; p=-1; for(i=0;i<quantity;i++){ if(!strcmp(processes[i].name,name)){ p=i; break; } } if(p!=-1){ banker.remain_a+=processes[p].a; banker.remain_b+=processes[p].b; banker.remain_c+=processes[p].c; for(i=p;i<quantity-1;i++){ processes[i]=processes[i+1]; } strcpy(processes[quantity-1].name,""); processes[quantity-1].a=0; processes[quantity-1].b=0; processes[quantity-1].c=0; processes[quantity-1].need_a=0; processes[quantity-1].need_b=0; processes[quantity-1].need_c=0; quantity--; cout<<"撤消作业成功"<<endl; } else{ cout<<"撤消作业失败"<<endl; } } //查看资源情况 void view() { int i; cout<<endl<<"查看资源情况"<<endl; cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<<endl; cout<<"银行家所剩资源(剩余资源/总共资源)"<<endl; cout<<"A类:"<<banker.remain_a<<"/"<<banker.a; cout<<" B类:"<<banker.remain_b<<"/"<<banker.b; cout<<" C类:"<<banker.remain_c<<"/"<<banker.c; cout<<endl<<endl<<"作业占用情况(已占用资源/所需资源)"<<endl<<endl; if(quantity>0){ for(i=0;i<quantity;i++){ cout<<"作业名:"<<processes[i].name<<endl; cout<<"A类:"<<processes[i].a<<"/"<<processes[i].need_a; cout<<" B类:"<<processes[i].b<<"/"<<processes[i].need_b; cout<<" C类:"<<processes[i].c<<"/"<<processes[i].need_c; cout<<endl; } } else{ cout<<"当前没有作业"<<endl; } } //显示版权信息函数 void version() { cout<<endl<<endl; cout<<" ┏━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl; cout<<" ┃ 银 行 家 算 法 ┃"<<endl; cout<<" ┠———————————————————————┨"<<endl; cout<<" ┃ (c)All Right Reserved Neo ┃"<<endl; cout<<" ┃ sony006@ ┃"<<endl; cout<<" ┃ version 2004 build 1122 ┃"<<endl; cout<<" ┗━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl; cout<<endl<<endl; } int main(void) { int chioce; int flag=1; initial(); version(); while(flag){ cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<<endl; cout<<"1.新加作业 2.为作业申请资源 3.撤消作业"<<endl; cout<<"4.查看资源情况 0.退出系统"<<endl; cout<<"请选择:"; cin>>chioce; switch(chioce){ case 1: add(); break; case 2: bid(); break; case 3: finished(); break; case 4: view(); break; case 0: flag=0; break; default: cout<<"选择错误"<<endl<<endl; } } return 0; }

A2Hosting三年付$1.99/月,庆祝18周年/WordPress共享主机最高优惠81%/100GB SSD空间/无限流量

A2Hosting主机,A2Hosting怎么样?A2Hosting是UK2集团下属公司,成立于2003年的老牌国外主机商,产品包括虚拟主机、VPS和独立服务器等,数据中心提供包括美国、新加坡softlayer和荷兰三个地区机房。A2Hosting在国外是一家非常大非常有名气的终合型主机商,拥有几百万的客户,非常值得信赖,国外主机论坛对它家的虚拟主机评价非常不错,当前,A2Hosting主机庆祝1...

AkkoCloud(60元/月 ),英国伦敦CN2 1核 768 MB 内存 10 GB SSD 硬盘 600GB 流量 英国伦敦CN2 1核  1.5G  300Mbps

官方网站:https://www.akkocloud.com/AkkoCloud新品英国伦敦CN2 GIA已上线三网回程CN2 GIA 国内速度优秀.电信去程CN2 GIALooking Glass:http://lonlg.akkocloud.com/Speedtest:http://lonlg.akkocloud.com/speedtest/新品上线刚好碰上国庆节 特此放上国庆专属九折循环优惠...

Linode($5/月),新用户注册送100美元,11个数据中心云服务器

关于Linode,这是一家运营超过18年的VPS云主机商家,产品支持随时删除(按小时计费),可选包括美国、英国、新加坡、日本、印度、加拿大、德国等全球十多个数据中心,最低每月费用5美元($0.0075/小时)起。目前,注册Linode的新用户添加付款方式后可以获得100美元赠送,有效期为60天,让更多新朋友可以体验Linode的产品和服务。Linode的云主机产品分为几类,下面分别列出几款套餐配置...

银行家算法c为你推荐
网络视频下载器网络视频下载工具哪个好用?sms是什么短信验证是什么?动画分镜头脚本求份《仙剑奇侠传5》剧情动画分镜头脚本 越多越好防火墙技术应用在网络支付流程中,防火墙技术与数据加密技术应用则重点有什么不同?erp系统教程如何使用ERP系统操作?东兴证券网站东兴证券超强版下载,东兴证券超强版v6下载官方网站,东兴证券软件下载怎么查微信注册时间怎么查看自己的微信号用了多久泛微协同办公系统泛微oa怎么样?我想了解一下,有用过的同仁帮忙!发表下自己的观点(天津)泛微协同办公系统谁能告诉我泛微OA,协同性是体现在哪几个方面的?泛微有哪些优势??泛微协同办公系统泛微软件怎么样?做协同办公的,我要来这做销售前景怎么样?请大家对这个行业或公司了解的给些建议。
bluevm sugarsync 牛人与腾讯客服对话 促正网秒杀 福建铁通 网通服务器托管 空间购买 免费外链相册 免费的asp空间 免费个人主页 徐州电信 好看的空间 网站防护 脚本大全 学生机 腾讯云平台 镇江高防服务器 时间服务器 标准机柜 server2008 更多