FCFS(先到先服务)算法 C++实现

1 FCFS简介

    后续补上... 

2 源代码

#include <iostream>
#include <string>
using namespace std;

 //进程结构体
struct process
{
	string name;//进程名
	int arriveTime;//到达时间
	int runTime;//进程运行时间
	int startTime;//进程开始运行时间
	int endTime;//进程结束时间
};

//进程按到达时间排序
void sortProcess( process* A)
{
	for(int i=0;i<4;i++)
	{
		for(int j=i+1;j<5;j++)
		{
			if((A+j)->arriveTime<(A+i)->arriveTime)
			{ 
				string Na;
				int aT,rT;

				Na=(A+i)->name;
				(A+i)->name = (A+j)->name;
				(A+j)->name = Na;

				aT=(A+i)->arriveTime;
				(A+i)->arriveTime = (A+j)->arriveTime;
				(A+j)->arriveTime = aT;

				rT=(A+i)->runTime;
				(A+i)->runTime = (A+j)->runTime;
				(A+j)->runTime = rT;
			}
		}
	}
}

//打印进程
void printProcess( process *A )
{
	cout<<"name"<<" "<<"arriveTime"<<" "<<"runTime"<<" "<<"startTime"<<" "<<"endTime"<<endl;
	for(int i=0;i<5;i++)
	{
		cout<<A->name<<"\t"<<A->arriveTime<<"\t"<<A->runTime<<"\t"<<A->startTime<<"\t"<<A->endTime<<endl;
		A++;
	}
}

int main()
{
	process Proc[5]={
		{"A",4,4},{"B",3,3},{"C",2,2},{"D",1,1},{"E",6,6}
	};
	cout<<"原进程信息"<<endl;
	printProcess( &Proc[0]);
	sortProcess( &Proc[0]);
	cout<<"排序后进程信息"<<endl;
	printProcess( &Proc[0]);

	//t为当前时间
	int t=0;
	int num=0;
	while(num<5)
	{
		if(t>Proc[num].arriveTime)
		{
			Proc[num].startTime = t;
			Proc[num].endTime = Proc[num].startTime + Proc[num].runTime;
			t = Proc[num].endTime;
			num++;
		}
		else
		{
			t++;
		}
	}

	cout<<"FCFS模拟结果"<<endl;
	printProcess( &Proc[0]);

}

3 结果

 

猜你喜欢

转载自blog.csdn.net/qq_29406323/article/details/88051862