分享
 
 
 

教学计划编制问题

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

问题描述;

大学的每个专业都要编制教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限都相等。每个专业开设的课程都是确定的,而且课程的开设时间的安排必须满足先修关系。每个课程的先修关系都是确定的,可以有任意多门,也可以没有。每一门课程恰好一个学期。试在这样的情况下设置一个教学计划编制程序。

基本要求:

(1):输入参数:学期总数,一学期的学分上限,每门课的课程号,学分,直接先修关系的课程号。

(2):课程号尽可能的集中在前几个学期中。

(3):若无解,则报告错误信息;否则见教学计划输入到指定的文件中。计划的表格格式自行设计。

以下为我设计的一段程序,其中有一些错误,并且将教学计划输入到指定的文件中这一要求没有完成,望一并指正和修改,因为该问题为我的课程设计,十分的急迫,我将表示无限的感激并永远的支持该网站!

/* 输出有向图的一个拓扑序列及其应用问题的算法实现程序 */

#include<string.h>

#include<ctype.h>

#include<malloc.h> // malloc()等

#include<limits.h> // INT_MAX等

#include<stdio.h> // EOF(=^Z或F6),NULL

#include<stdlib.h> // atoi()52

#include<io.h> // eof()

#include<math.h> // floor(),ceil(),abs()

#include<process.h> // exit()

#include<iostream.h> // cout,cin

// 函数结果状态代码

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等

typedef int Boolean; // Boolean是布尔类型,其值是TRUE或FALSE

#define MAX_NAME 10

/* 顶点字符串的最大长度 */

#define MAXCLASS 100

int Z=0;

int X=0;

int xqzs,q=1,xfsx;

typedef int InfoType;

typedef char VertexType[MAX_NAME]; /* 字符串类型 */

/* 图的邻接表存储表示 */

#define MAX_VERTEX_NUM 100

typedef enum{DG}GraphKind; /* {有向图,有向网,无向图,无向网} */

typedef strUCt ArcNode

{

int adjvex; /* 该弧所指向的顶点的位置 */

struct ArcNode *nextarc; /* 指向下一条弧的指针 */

InfoType *info; /* 网的权值指针) */

}ArcNode; /* 表结点 */

typedef struct

{

VertexType data; /* 顶点信息 */

ArcNode *firstarc; /* 第一个表结点的地址,指向第一条依附该顶点的弧的指针 */

}VNode,AdjList[MAX_VERTEX_NUM]; /* 头结点 */

typedef struct

{

AdjList vertices,verticestwo;

int vexnum,arcnum; /* 图的当前顶点数和弧数 */

int kind; /* 图的种类标志 */

}ALGraph;

/* 图的邻接表存储的基本操作 */

int LocateVex(ALGraph G,VertexType u)

{ /* 初始条件: 图G存在,u和G中顶点有相同特征 */

/* 操作结果: 若G中存在顶点u,则返回该顶点在图中位置;否则返回-1 */

int i;

for(i=0;i<G.vexnum;++i)

if(strcmp(u,G.vertices[i].data)==0)

return i;

return -1;

}

Status CreateGraph(ALGraph *G)

{ /* 采用邻接表存储结构,构造没有相关信息的图G(用一个函数构造4种图) */

int i,j,k;

VertexType va,vb;

ArcNode *p;

printf("请输入教学计划的课程数: ");

scanf("%d",&(*G).vexnum);

printf("请输入拓扑排序所形成的课程先修关系的边数: ");

scanf("%d",&(*G).arcnum);

printf("请输入%d个课程的代表值(<%d个字符):\n",(*G).vexnum,MAX_NAME);

for(i=0;i<(*G).vexnum;++i) /* 构造顶点向量 */

{ scanf("%s",(*G).vertices[i].data);

(*G).vertices[i].firstarc=NULL;

}

printf("请输入%d个课程的学分值(<%d个字符):\n",(*G).vexnum,MAX_NAME);

for(i=0;i<(*G).vexnum;++i) /* 构造顶点向量 */

{scanf("%s",(*G).verticestwo[i].data);

}

printf("请顺序输入每条弧(边)的弧尾和弧头(以空格作为间隔):\n");

for(k=0;k<(*G).arcnum;++k) /* 构造表结点链表 */

{ scanf("%s%s",va,vb);

i=LocateVex(*G,va); /* 弧尾 */

j=LocateVex(*G,vb); /* 弧头 */

p=(ArcNode*)malloc(sizeof(ArcNode));

p->adjvex=j;

p->info=NULL; /* 图 */

p->nextarc=(*G).vertices[i].firstarc; /* 插在表头 */

(*G).vertices[i].firstarc=p;

}

return OK;

}

void Display(ALGraph G)

{ /* 输出图的邻接矩阵G */

int i;

ArcNode *p;

switch(G.kind)

{case DG: printf("有向图\n");

}

printf("%d个顶点:\n",G.vexnum);

for(i=0;i<G.vexnum;++i)

printf("%s ",G.vertices[i].data);

printf("\n%d条弧(边):\n",G.arcnum);

for(i=0;i<G.vexnum;i++)

{

p=G.vertices[i].firstarc;

while(p)

{printf("%s→%s ",G.vertices[i].data,G.vertices[p->adjvex].data);

p=p->nextarc;

}

printf("\n");

}

}

void FindInDegree(ALGraph G,int indegree[])

{ /* 求顶点的入度,算法调用 */

int i;

ArcNode *p;

for(i=0;i<G.vexnum;i++)

indegree[i]=0; /* 赋初值 */

for(i=0;i<G.vexnum;i++)

{

p=G.vertices[i].firstarc;

while(p)

{ indegree[p->adjvex]++;

p=p->nextarc;

}

}

}

typedef int SElemType; /* 栈类型 */

/*栈的顺序存储表示 */

#define STACK_IN99v_SIZE 10 /* 存储空间初始分配量 */

#define STACKINCREMENT 2 /* 存储空间分配增量 */

typedef struct SqStack

{

SElemType *base; /* 在栈构造之前和销毁之后,base的值为NULL */

SElemType *top; /* 栈顶指针 */

int stacksize; /* 当前已分配的存储空间,以元素为单位 */

}SqStack; /* 顺序栈 */

/* 顺序栈的基本操作 */

Status InitStack(SqStack *S)

{ /* 构造一个空栈S */

(*S).base=(SElemType *)malloc(STACK_IN99v_SIZE*sizeof(SElemType));

if(!(*S).base)

exit(OVERFLOW); /* 存储分配失败 */

(*S).top=(*S).base;

(*S).stacksize=STACK_IN99v_SIZE;

return OK;

}

Status StackEmpty(SqStack S)

{ /* 若栈S为空栈,则返回TRUE,否则返回FALSE */

if(S.top==S.base)

return TRUE;

else

return FALSE;

}

Status Pop(SqStack *S,SElemType *e)

{ /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */

if((*S).top==(*S).base)

return ERROR;

*e=*--(*S).top;

return OK;

}

Status Push(SqStack *S,SElemType e)

{ /* 插入元素e为新的栈顶元素 */

if((*S).top-(*S).base>=(*S).stacksize) /* 栈满,追加存储空间 */

{

(*S).base=(SElemType *)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof

[1] [2]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有