www.pudn.com > yinhangjiasuanfa.rar > main.cpp


#include  
using 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;iNEED[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;iWork[j]) 
                  { 
                      break; 
                  } 
              } 
              if(j==n) 
              {  
                  FINISH[i]=true; 
                  for(k=0;k"; 
                  } 
              } 
              cout<<""<