一个老师给的作业,进程调度 排序问题!给个建议

sharpwt 2004-12-26 04:04:44
#include "stdio.h"
#define N 10
//#define M 10
typedef struct
{
int m;
//int flag;
int priority;//优先级顺序
float zhixing;
float zhouzhuan;
float dq_zhouzhuan;
}process;
//int flag=0;//标志已经执行个进程的个数
//float time=0;//当前共执行的时间
void main()
{
//int plag=0;
float time=0;
int n;
int i,j,temp;
process fcfs[N],*p[N],*q;
float time_zhouzhuan=0,wtime_zhouzhuan=0;
//输入
printf("请输入进程的个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
fcfs[i].m=i+1;
//fcfs[i].linshi=0;
//fcfs[i].flag=0;
printf("请输入进程%d所需的执行时间和进程的优先级:",fcfs[i].m);
scanf("%f %d",&fcfs[i].zhixing,&fcfs[i].priority);
}
printf("haha");
// for(i=0;i<n;i++)
// {
// p[i]=&fcfs[i];
// }
//按优先级别的排序
for(j=0;j<n-1;j++)
{
printf("ok");//有问题
temp=j;
for(i=j+1;i<n;i++)
{
printf("ky");
if(p[i]->priority>p[temp]->priority)
temp=i;
}
printf("QQ");
q=p[j];//交换
p[j]=p[temp];
p[temp]=q;
}
printf("he");
//优先级算法
for(i=0;i<n;i++)
{
time+=p[i]->zhixing;
p[i]->zhouzhuan=time;
p[i]->dq_zhouzhuan=p[i]->zhouzhuan/p[i]->zhixing;
}
for(i=0;i<n;i++)
{
time_zhouzhuan+=p[i]->zhouzhuan;
wtime_zhouzhuan+=p[i]->dq_zhouzhuan;
}
time_zhouzhuan/=n;
wtime_zhouzhuan/=n;
//输出结果
printf("静态优先级算法的进程的执行顺序为:\n");
for(i=0;i<n;i++)
{
printf("%d ",p[i]->m);
}
printf("\n平均周转时间为%f",time_zhouzhuan);
printf("\n带权平均周转时间为%f",wtime_zhouzhuan);
}
/*#include "stdio.h"
void main()
{
int i,j,temp,n,q;
int a[10];

printf("请输入进程个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入进程%d的优先级别",i+1);
scanf("%d",&a[i]);
}
//排序
for(j=0;j<n-1;j++)
{
temp=j;
for(i=j+1;i<n;i++)
{
if(a[i]>a[temp])
temp=i;
}
q=a[j];
a[j]=a[temp];
a[temp]=q;
}
for(i=0;i<n;i++)
{
printf("%d",a[i]);
}
}*/







...全文
86 点赞 收藏 4
写回复
4 条回复
quaiyan 2004年12月27日
#include "stdio.h"
#include "stdlib.h"
#define N 10
//#define M 10
typedef struct
{
int m;
//int flag;
int priority;//优先级顺序
float zhixing;
float zhouzhuan;
float dq_zhouzhuan;
}process;
//int flag=0;//标志已经执行个进程的个数
//float time=0;//当前共执行的时间
void main()
{
//int plag=0;
float time=0;
int n;
int i,j,temp;
process fcfs[N],*p[N],*q;
float time_zhouzhuan=0,wtime_zhouzhuan=0;
//输入
printf("请输入进程的个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
fcfs[i].m=i+1;
//fcfs[i].linshi=0;
//fcfs[i].flag=0;
printf("请输入进程%d所需的执行时间和进程的优先级:",fcfs[i].m);
scanf("%f %d",&fcfs[i].zhixing,&fcfs[i].priority);
}
printf("haha");

for(i=0;i<n;i++)
{
p[i]=(process*)malloc(sizeof(process));//分配空间
p[i]=&fcfs[i];
}
//按优先级别的排序
for(j=0;j<n-1;j++)
{
printf("ok");//有问题
temp=j;
for(i=j+1;i<n;i++)
{
printf("ky");
if(p[i]->priority>p[temp]->priority)
temp=i;
}
printf("QQ");
q=p[j];//交换
p[j]=p[temp];
p[temp]=q;
}
printf("he");
//优先级算法
for(i=0;i<n;i++)
{
time+=p[i]->zhixing;
p[i]->zhouzhuan=time;
p[i]->dq_zhouzhuan=p[i]->zhouzhuan/p[i]->zhixing;
}
for(i=0;i<n;i++)
{
time_zhouzhuan+=p[i]->zhouzhuan;
wtime_zhouzhuan+=p[i]->dq_zhouzhuan;
}
time_zhouzhuan/=n;
wtime_zhouzhuan/=n;
//输出结果
printf("静态优先级算法的进程的执行顺序为:\n");
for(i=0;i<n;i++)
{
printf("%d ",p[i]->m);
}
printf("\n平均周转时间为%f",time_zhouzhuan);
printf("\n带权平均周转时间为%f",wtime_zhouzhuan);
}
回复 点赞
sharpwt 2004年12月27日
是老师的作业。感觉排序的方法不怎么好,哪位给个好的方法。给代码最好,谢谢!
回复 点赞
zhengwei1984222 2004年12月27日
要什么建议?
回复 点赞
xuzheng318 2004年12月26日
作业!
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告