作业调度问题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 与下面条件...