当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

教学计划编制问题

    问题描述;

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

    基本要求:

    (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;
     }
 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接