作业调度问题C程序设计

发布 2021-05-06 07:22:28 阅读 2265

作业调度问题c程序设计 (2009-04-18 16:38:10)**。

标签: 程序设计 it

实验目的:

1.熟悉多机调度问题的算法;

2.进一步掌握贪心算法。

3.提高分析与解决问题的能力。

实验内容:

要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。约定,每个作业均可在任何一台机器上加工处理,但未完工前不允许中断处理。作业不能拆分成更小的子作业。

编写程序求出花费时间最少的作业分配方案。

程序源**:

/作者:龙琼

#include""

#include""

file *fp1,*fp2; /定义两个文件指针,用来分别指向文件和。

typedef struct jobnode //作业结构体(链表)

int id; /作业标号。

int time;//作业所需时间。

struct jobnode *next;

jobnode,*pjobnode;

typedef struct header //机器以及相应作业链表的表头。

int s;//机器的开销。

pjobnode next;

header,*pheader;

void init(pjobnode head,int n,pheader m,int m)

int i;

pjobnode p,q;

for(i=0;i

q=q->next;

if(!q->next)q->next=p;

for(i=0;i

int selectmin(header* m,int m)//选择开销最小队列,并把作业插入。

int i,k=0;

for(i=1;i if(m[i].s return k;

void distribute(pjobnode head,pheader m,int m,int n)

int i,j;

pjobnode p,q,t;

q=head->next;

for(j=0;j

elsem[i].s=m[i].s+q->time;q=t;

void display(pheader p,int m)//将分配结果输出到文件中。

int i,j,max=0;

pjobnode q;

fprintf(fp2,"分配情况:");

fprintf(fp2,"机器号总开销对应作业");

for(i=0;i

fprintf(fp2,"");

for(i=0;i if(p[i].s>p[max].s)

max=i;

fprintf(fp2,"整个作业的总时间开销为:%d",p[max]);

void main()

int n,m;

pheader p;

jobnode head;

fp1=fopen(""r");打开文件,用于获取数据和打印数据。

fp2=fopen(""w");

p=(pheader)malloc(sizeof(header));

fscanf(fp1,"%d%d",&n,&m);/从文件中获取作业数和机器数。

init(&head,n,p,m);

distribute(&head,p,m,n);

display(p,m);

fclose(fp1);

fclose(fp2);

运行结果:

8 3 分配情况 :

1-7 机器号总开销对应作业。

5-6 整个作业的总时间开销为 :22

C程序设计作业

和田师范专科学校学生课后作业。2009 2010学年第一学期。系部 计算机科学系 课程名称 c语言程序设计。授课班级 2007级。授课教师 艾孜孜。作业一。一 选择题。1.c语言程序由什么组成?a 子程序 b 主程序和子程序 c 函数 d 过程。2 以下叙述中c语言特点不正确的是 a 在c程序语言简...

《C程序设计》作业

c 程序设计 作业1 时间 2011年10月9日星期日。描述 该作业总共包含三套作业,有些有具体的作业要求提交 3个星期内提交。要求 问答题用word文档写好,标上各自姓名 学号 班级,标上大标题 c 程序设计作业1 第一套。1.什么叫内联函数?它有哪些特点?重载函数通过什么区分?2.使用内联函数计...

C 程序设计作业

单项选择题 第1题设array为一个数组,则表达式sizeof array sizeof array 0 的结果为 a array数组首地址 b array数组中元素个数 c array数组中每个元素所占的字节数 d array数组占的总字节数 答案 b 第2题 while x 中的 x 与下面条件...