www.pudn.com > yinhangjiasuanfa.rar > main.cpp
#includeusing namespace std; #define MAXPROCESS 50 /*最大进程数*/ #define MAXRESOURCE 100 /*最大资源数*/ int AVAILABLE[MAXRESOURCE]; /*可用资源数组*/ int MAX[MAXPROCESS][MAXRESOURCE]; /*最大需求矩阵*/ int ALLOCATION[MAXPROCESS][MAXRESOURCE]; /*分配矩阵*/ int NEED[MAXPROCESS][MAXRESOURCE]; /*需求矩阵*/ int REQUEST[MAXPROCESS][MAXRESOURCE]; /*进程需要资源数*/ bool FINISH[MAXPROCESS]; /*系统是否有足够的资源分配*/ int p[MAXPROCESS]; /*记录序列*/ int m,n; /*m个进程,n个资源*/ void Init(); bool Safe(); void Bank(); int main() { Init(); Safe(); Bank(); } void Init() /*初始化算法*/ { int i,j; cout<<"\t---------------------------------------------------"< >m; cout<<"请输入资源的种类:"; cin>>n; cout<<"请输入每个进程最多所需的各资源数,按照"< >MAX[i][j]; cout<<"请输入每个进程已分配的各资源数,也按照"< >ALLOCATION[i][j]; NEED[i][j]=MAX[i][j]-ALLOCATION[i][j]; if(NEED[i][j]<0) { cout<<"您输入的第"<>AVAILABLE[i]; } } void Bank() /*银行家算法*/ { int i,cusneed; char again; while(1) { cout<<"请输入要申请资源的进程号(注:第1个进程号为0,依次类推)"< >cusneed; cout<<"请输入进程所请求的各资源的数量"< >REQUEST[cusneed][i]; } for(i=0;i NEED[cusneed][i]) { cout<<"您输入的请求数超过进程的需求量!请重新输入!"< AVAILABLE[i]) { cout<<"您输入的请求数超过系统有的资源数!请重新输入!"< >again; if(again=='y'||again=='Y') { continue; } break; } } bool Safe() /*安全性算法*/ { int i,j,k,l=0; int Work[MAXRESOURCE]; /*工作数组*/ for(i=0;i Work[j]) { break; } } if(j==n) { FINISH[i]=true; for(k=0;k "; } } cout<<""<