码迷,mamicode.com
首页 > 系统相关 > 详细

实验三 进程延续

时间:2016-04-25 21:03:12      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

#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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!