⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bank.cpp

📁 银行家算法
💻 CPP
字号:
#include "iostream.h"
#include "bank.h"

int main(void)
{
	CProcess process[N];
	CResource resource;
	DWORD n = 0, j = 0;

	for(int i = 0; i < N; i++)
	{
		process[i].Set();
	}
	cout<<Test(process);
	while (0 == Test(process))
	{
//	cout<<"A"<<n;
		if (0 == process[n].ok)
		{
			if (Check(process, resource, n))
			{
				resource.AddResource(process[n]);
				cout<<(n + 1);
				j = 0;
			}
		}
			n++;
			j++;
			if (j > N)
			{
				cout<<"no!";

				return 1;
			}
			n %= N;
	}

	return 0;
}

CProcess::CProcess()
{
	srand((unsigned)time (NULL));
	Sleep(1000);
	for(int i = 0; i < M; i++)
	{
		max[i] = (rand() % Z) + 1;
		used[i] = Z;
		cout<<max[i];
	}
	ok = 0;
	cout<<endl;
}

void CProcess::Set()
{
	srand((unsigned)time (NULL));
	Sleep(1000);
	for(int i = 0; i < M; i++)
	{
		while (used[i] >= max[i])
		{
			used[i] = rand() % Z;
		}
		cout<<used[i];
	}
	cout<<endl;
}
	
CResource::CResource()
{
	srand((unsigned)time (NULL));
	cout<<endl;
	for(int i = 0; i < M; i++)
	{
		r[i] = (rand() % Z) + 1;
		cout<<r[i];
	}
	cout<<endl<<endl;
}

void CResource::AddResource(CProcess &p)
{
	for(int i = 0; i < M; i++)
	{
		r[i] += p.used[i];
		p.used[i] = 0;
	}
	p.ok = 1;
}

int Test(CProcess p[N])
{
	int result = 1;
	for(int i = 0; i < N; i++)
	{
		result *= p[i].ok;
	}

	return result;
}

BOOL Check(CProcess p[N], CResource r, int n)
{
	int result = TRUE;
	for(int i = 0; i < M; i++)
	{
		if (r.r[i] < (p[n].max[i] - p[n].used[i]))
		{
			return FALSE;
		}
	}

	return result;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -