#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<sstream>
using namespace std;

int freeFrameList[] = {4,7,8,5,1,2,11,12,10,13,14,15};
int freeFrameCnt = 12, freeFrameIndex = 0;
string frame[16] = {"ee","","","ww","","","gg","","","ff","","","","","",""};
string processA[] = {"ab","ef","cd","gh","xa","ta","ab","cg"};
string processB[] = {"rx","yy","zz","ww","mr","mk","fn","zx"};

void show_all(bool ba=false)
{
	if(!ba)
	{
		for(int i=0;i<79;i++)
			cout<<"=";
		cout<<endl;
	}
	printf("\n%s\n","ProcessA");
	for(int i=0;i<8;i++)printf(" %-2d",i);
	puts("");
	for(int i=0;i<8;i++)printf("%3s",processA[i].c_str());
	printf("\n\n%s\n","ProcessB");
	for(int i=0;i<8;i++)printf(" %-2d",i);
	puts("");
	for(int i=0;i<8;i++)printf("%3s",processB[i].c_str());
	printf("\n\n%s\n","freeFrameList");
	for(int i=freeFrameIndex;i<freeFrameCnt;i++)printf("%3d",freeFrameList[i]);
	printf("\n\n%s\n","frame");
	for(int i=0;i<16;i++)printf(" %-2d",i);
	puts("");
	for(int i=0;i<16;i++)printf("%3s",frame[i].c_str());
	puts("");puts("");
}

int main()
{
	string sa;
	show_all(true);
	for(int i=0;i<freeFrameCnt && cout<<"Enter next (ProcessName/page No) -> " && getline(cin,sa);i++)
	{
		sa.erase(0,sa.size()-3);
		istringstream ssin(sa);
		char ca;
		int ia;
		ssin>>ca>>ia;
		switch(ca)
		{
		case 'a':case 'A':
			frame[freeFrameList[freeFrameIndex++]] = processA[ia];
			break;
		case 'b':case 'B':
			frame[freeFrameList[freeFrameIndex++]] = processB[ia];
			break;
		}
		show_all();
	}
}
/*
ProcessA 0
ProcessB 1
ProcessA 4
ProcessB 5
ProcessB 7
ProcessA 7
ProcessA 2
ProcessB 6
*/
創作者介紹
創作者 和風信使 的頭像
和風信使

亂貼小站

和風信使 發表在 痞客邦 留言(0) 人氣()