求C语言高手 多机调度问题 ,设计个程序 要C语言版的 不要C++的 谢谢啊
发布网友
发布时间:2022-04-24 13:26
我来回答
共3个回答
热心网友
时间:2023-10-14 09:33
#include<stdio.h>
#define N 10
typedef struct node
{
int ID,time;
}jobnode;
typedef struct Node
{
int ID,avail;
}manode;
manode machine[N];
jobnode job[N];
manode* Find_min(manode a[],int m)
{
manode* temp=&a[0];
for(int i=1;i<m;i++)
{
if(a[i].avail<temp->avail)
temp=&a[i];
}
return temp;
}
void Sort(jobnode t[],int n)
{
jobnode temp;
for(int i=0;i<n-1;i++)
for(int j=n-1;j>i;j--)
{
if(job[j].time>job[j-1].time)
{
temp=job[j];
job[j]=job[j-1];
job[j-1]=temp;
}
}
}
void main()
{
int n,m,temp;
manode* ma;
printf("输入作业数目(作业编号按输入顺序处理)\n");
scanf("%d",&n);
printf("输入相应作业所需处理时间:\n");
for(int i=0;i<n;i++)
{
scanf("%d",&job[i].time);
job[i].ID=i+1;
}
printf("输入机器数目(机器编号按输入顺序处理)\n");
scanf("%d",&m);
for(i=0;i<m;i++)
{
machine[i].ID=i+1;
machine[i].avail=0;
}
putchar('\n');
if(n<=m)
{
printf("为每个作业分配一台机器,可完成任务!\n");
return;
}
Sort(job,n);
for(i=0;i<n;i++)
{
ma=Find_min(machine,m);
printf("将机器: %d 从 %d -----> %d 的时间段分配给作业: %d\n",ma->ID,ma->avail,ma->avail+job[i].time,job[i].ID);
ma->avail+=job[i].time;
}
temp=machine[0].avail;
for(i=1;i<m;i++)
{
if(machine[i].avail>temp)
temp=machine[i].avail;
}
putchar('\n');
printf("该批作业处理完成所需加工时间为: %d\n",temp);
}
刚写的,试过了,运行通过.主要运用贪心算法,应该算比较典型的吧,呵呵,该睡觉了,明天还有考试呢,希望对你有帮助!共同进步哈!
热心网友
时间:2023-10-14 09:33
#include "stdio.h"
struct date
{
unsigned short year ;
unsigned char month ;
unsigned char day ;
};
date today,tomorrow ;
void main()
{
unsigned char ltd[13]=;
while(1)
{
while(!ltd[0])
{
printf("请输入日期,格式如:2011,4,1\n");
scanf("%d,%d,%d",&today.year,&today.month,&today.day);
if(today.day>ltd[today.month]) printf("错误的日期输入.\n");
else if((today.day==29)&&(today.month==2)&&((today.year%100)==0)) printf("错误的日期输入.\n");
else if((today.day==29)&&(today.month==2)&&((today.year%4)!=0)) printf("错误的日期输入.\n");
else ltd[0]=1;
}
if(((today.month==2)&&(today.year%4==0)&&(today.year%100==0))||(today.year%4!=0)) ltd[2]=28;
tomorrow.day=(today.day+1)%(ltd[today.month]+1);
tomorrow.month=(today.month+(today.day+1)/ltd[today.month])%13;
tomorrow.year=today.year+(today.month+(today.day+1)/ltd[today.month])/13;
if(tomorrow.day==0) tomorrow.day=1;
if(tomorrow.month==0) tomorrow.month=1;
printf("%d,%d,%d,",tomorrow.year,tomorrow.month,tomorrow.day);
ltd[0]=0;
ltd[2]=29;
}
}
// 以上程序经TURBO C验证。
热心网友
时间:2023-10-14 09:34
多级反馈队列调度算法多级反馈队列调度算法是一种cpu处理机调度算法,unix操作系统采取的便是这种调度算法。多级反馈队列调度算法即能使高优先级的作业得到响应又能使短作业(进程)迅速完成。(对比一下fcfs与...