自己写的银行家算法代码,界面好看点,代码还没完善。 #include <iostream> #include <windows.h> #include <stdlib.h> const unsigned short PROCESS_COUNT=5;//进程数。 const unsigned short SORT_COUNT=3;//资源种类。 这个不能改动! const unsigned short TITLE_SIZE=12; const unsigned short THE_LIST_NAME=11; const unsigned short INFO_SIZE=45; #define NEED_ERROR 0 #define AVAILABLE_ERROR 1 int Flag[PROCESS_COUNT]={0}; int TheList[PROCESS_COUNT][SORT_COUNT]={0}; int Allocation[PROCESS_COUNT][SORT_COUNT]={0}; int Need[PROCESS_COUNT][SORT_COUNT]={0}; int Available[3]={0}; char cTitle[TITLE_SIZE]; char cTheListName[THE_LIST_NAME]; char info[INFO_SIZE]={'/0'}; void ShowInfoForm();//显示资源信息 void InitForm(char); void TryToAlloc(int,int*); bool SecurityAnalysis(int); int BankCheck(int iProc,int*Request); /*_____________________________________________________________________________________________*/ int main() { strcpy(cTitle,"资源分配表"); strcpy(cTheListName," TheMax "); strcpy(info,"程序初始化,请输入各项数值。 "); ShowInfoForm(); //ShowInfoForm(Flag,cTitle,cTheListName,TheList,Allocation,Need,Available,info); std::cout<<" 请输入可用资源最大值,按X X X格式:"; for (int i=0;i<SORT_COUNT;i++) { int temp=0; std::cin>>temp; if (0<=temp&&temp<10) { Available[i]=temp; } else { std::cout<<"请输入0-10之间的数/n"; i--; } } ShowInfoForm(/*Flag,cTitle,cTheListName,TheList,Allocation,Need,Available,info*/); InitForm('M'); InitForm('A'); std::cout<<" 请输入发起资源申请的进程号(0-"<<PROCESS_COUNT-1<<"):"; int iProc=0; std::cin>>iProc; if (0>iProc||iProc>PROCESS_COUNT)std::cout<<"无此进程!/n"; std::cout<<" 请输入申请资源的数量,按X X X格式:"; int Request[3]={0}; for (int i=0;i<3;i++) { int temp=0; std::cin>>temp; if (0<=temp&&temp<10) Request[i]=temp; } if (NEED_ERROR==BankCheck(iProc,Request)) strcpy(i