#include "iostream.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "windows.h"
#define MAX_PROGRAM 50 //系统可承受最大进程数量
char pname[MAX_PROGRAM][5]={"P1","P2","P3","P4","P5","P6","P7","P8","P9","P10",
"P11","P12","P13","P14","P15","P16","P17","P18","P19","P20",
"P21","P22","P23","P24","P25","P26","P27","P28","P29","P30",
"P31","P32","P33","P34","P35","P36","P37","P38","P39","P40",
"P41","P42","P43","P44","P45","P46","P47","P48","P49","P50"};
struct PCB //进程控制块
{
char name[5]; //进程名
int m_time; //要求运行时间
int r_time; //已经运行时间
int a_time; //总运行时间
int value; //优先数
char condition; //状态
struct PCB *next; //指针
}*head,*p,*q,*run,System_PCB[MAX_PROGRAM],center,*headc;
int NO_OF_PROGRAM; //系统实际运行进程数量,由用户从键盘输入
char iname[5];
void Initiate() //初始化
{
int i;
char ch;
cout<<"请选择初始化信息方式(y--键盘输入n--默认值):";
cin>>ch;
for(i=0;i<NO_OF_PROGRAM;i++)
{
if(ch=='y')
{
cout<<"第"<<i+1<<"个进程名:";
cin>>iname;
strcpy(System_PCB[i].name,iname);
cout<<"运行时间:";
cin>>System_PCB[i].m_time ;
cout<<"优先数:";
cin>>System_PCB[i].value ;
System_PCB[i].a_time =0;
System_PCB[i].r_time =0;
}
if(ch=='n')
{
strcpy(System_PCB[i].name ,pname[i]);
System_PCB[i].m_time =(int)(rand()) % 10 +1;
System_PCB[i].value =(int)(rand()) % 10 +1;
System_PCB[i].a_time =0;
System_PCB[i].r_time =0;
}
System_PCB[i].condition ='R';
}
}
void Sortness() //按优先数高-->低排序
{
int i,j;
for(i=0;i<NO_OF_PROGRAM;i++)