时间片轮转算法(RR算法)c++ 数组

#include
using namespace std;
const int N=10;
double daoda[N];//存储到达时间的数组 
double fuwu[N]; //存储服务时间的数组 
double fuwu_[N];//服务时间的副本 
double wancheng[N]={0};//存储完成时间的数组 ,完成时间先都赋值为0 
double zhouzhuan[N];//存储周转时间的数组 
double daiquanz[N];//存储带权周转时间的数组 
string name[N];//每个进程的名字 
int main()
{
	//RR 时间片轮转算法 
	cout<<"请输入进程数:"<>n;
	cout<<"请按照顺序分别输入"<>name[i];//进程的名字 比如A B C 之类的 
    	cin>>daoda[i]>>fuwu[i];//初始条件 存入到达时间和运行时间 
    	fuwu_[i]=fuwu[i];//备份 
	}
	double q;
	cout<<"请输入时间片q:"<>q;
	for(int i=0;i

测试结果:

时间片轮转算法(RR算法)c++ 数组_第1张图片

时间片轮转算法(RR算法)c++ 数组_第2张图片 

 设计思路:一开始定义了七个数组用来存储到达时间、服务时间、服务时间副本、完成时间、周转时间、带权周转时间和进程名字,完成时间初始化赋值为0,然后屏幕输入例如进程名字、到达时间和服务时间(运行时间),然后屏幕输入时间片,根据到达时间的先后对进程进行排序,然后时计算完成时间,先是count存入进程总数(不直接用n是防止改变n值影响后面的计算),count1存入每一轮完成的进程数,addfuwu存入累计服务时间,然后设立while循环,当进程数为0的时候结束循环,每一次循环开始先计算剩余进程数赋值给总进程数,然后设立for循环,表示对n个进程调度一轮的调度,在for循环中设立if语句,用来判断这一轮的剩余服务时间和时间片大小的比较,如果剩余服务时间小于等于时间片,先判断这是不是已经结束了的进程,(根据完成时间是不是0来判断),如果是累计服务时间+0,如果不是累计服务时间+这一轮的剩余服务时间,完成时间=累计服务时间,count1++存入完成进程数;如果剩余服务时间大于时间片,剩余服务时间-时间片q,累计服务时间+q;这样while循环下来可以计算完成时间,然后再算周转时间和带权周转时间、平均周转时间和平均带权周转时间,(计算这些时间的时候的服务时间用的是备份的服务时间,因为服务时间在计算完成时间的时候被更改),最后屏幕输出。

 

 原创不易,请大家多多支持呀!小白一枚,欢迎大家提出问题!

你可能感兴趣的:(C++简单应用,c++,算法)