工程包含多个.c文件。建个工程就可以了。
代码在下面:
//EDF.h
#include
#define n 5
struct Program{
char name;
int run;
int end;
}A[5];
void Input();
void EDF();
/*************************************************/
//main.c
/*EDF算法实现-C语言,结构体
作者:猪来投胎
时间:2012-7-9
*/
#include "EDF.h"
void Input();
int main()
{
Input();
EDF();
return 0;
}
/*************************************************/
//input.c
/*************
输入
*************/
#include"EDF.h"
void Input()
{
//program A[n];
char s;
int i;
for(i=0;i
{
printf("Program's name,Running time,End time:");
scanf("%c %d %d",&A[i].name,&A[i].run,&A[i].end);
fflush(stdin);/*清空缓冲区,否则scanf函数会获取到之前输入的东西,具体为什么我也不太清楚,知道的告诉我一声哈*/
}
printf("\n");
printf("What you input is:\n");
for(i=0;i
{
printf("%c\t%d\t%d\n",A[i].name,A[i].run,A[i].end);
}
printf("\n");
}
/****************************************************/
//edf.c
#include"EDF.h"
void copy(struct Program* b,struct Program* a) //把a赋值给b
{
b->name = a->name;
b->run = a->run;
b->end = a->end;
return;
}
/***********
EDF核心算法
************/
void EDF()
{
struct Program m;
int i,j,k;
int sum;
//排序
for(i = 0;i
{
k = i;
for(j = i;j < n;j++)
{
if(A[j].end < A[k].end)
k = j;
}
copy(&m,&A[k]);
copy(&A[k],&A[i]);
copy(&A[i],&m);
}
printf("截至时间排序如下:\n");
for(i=0;i
printf("%c\t%d\t%d\n",A[i].name,A[i].run,A[i].end);
}
printf("*********************\n");
//判断
sum = 0;
printf("调度顺序如下:\n");
for(i = 0;i < n;i++)
{
sum += A[i].run;
if(sum <= A[i].end)
printf("%c\n",A[i].name);
else
{
sum -= A[i].run; //不能够在截至时间之前完成的,直接不调度。
printf("%c not run!\n",A[i].name);
}
}
}