标签:
#include<stdio.h>
#define N 10
typedef struct jincheng //进程结构体定义
{
char name;
int arrive;
int prio;
int needTime;
}JinCheng;
void shuru(JinCheng a[],int n){ //输入进程基本信息
int i;
for(i=0;i<n;i++)
{
printf("请输入%d进程的程序名:",i+1);
scanf("%c",&a[i].name);
printf("请输入%d进程的优先级:",i+1);
scanf("%d",&a[i].prio);
printf("请输入%d进程的到达时间:",i+1);
scanf("%d",&a[i].arrive);
printf("请输入%d进程的需要时间:",i+1);
scanf("%d",&a[i].needTime);
getchar();
printf("\n");
}
}
void paixu(JinCheng a[],int n)
{
int i,j;
JinCheng temp;
for(i=0;i<n;i++)
for(j=i;j<N;j++)
{
//按进程优先级排序
if(a[j].prio>a[i].prio)
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
//优先级一样
if(a[j].prio==a[i].prio)
{
if(a[j].arrive<a[i].arrive)
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
} //先来先服务排序
}
}
void shuchu(JinCheng a[],int n) //输出进程的信息
{
int i;
printf("对进程的排序:\n");
printf("name\tprio\tneedTime\n");
for(i=0;i<n;i++)
{
printf("%c\t%d\t%d\n",a[i].name,a[i].prio,a[i].needTime);
}
}
void yunxing(JinCheng a[],int n)
{
int i=0;
while(a[i].needTime>=0&&a[i].prio>=0)
{
if(a[i].needTime==0)
{
a[i].prio=-1;
printf("进程%c已执行结束!\n",a[i].name);
printf("---------------------------\n");
i=i+1;
if(a[i].needTime==0)
{
printf("进程%c已执行结束!\n",a[i].name);
i=i+1;
}
}
if(a[i].prio ==0)
{
while(a[i].needTime!=0)
{
a[i].needTime--;
}
}
a[i].needTime--;
a[i].prio--;
printf("现在执行的进程信息:\n");
printf("name\tprio\tneedTime\n");
printf("%c\t%d\t%d\n",a[i].name,a[i].prio,a[i].needTime);
printf("-------------------------\n");
paixu(a,n); //执行一次进程之后再排序
shuchu(a,n); //显示再次排序的进程序列
printf("\n");
}
}
main(){
int n;
JinCheng a[N];
printf("请输入进程的数量:\n");
scanf("%d",&n);
getchar();
shuru(a,n);
paixu(a,n);
shuchu(a,n);
yunxing(a,n);
}
标签:
原文地址:http://www.cnblogs.com/knight-hui/p/5432636.html