輸入引數應包括:學期總數,一學期的學分上限,每門課的課程號(可以是固定佔 3位的字母數字串)、學分和直接先修課的課程號。
應允許使用者指定下列兩種編排策略之一:一是使學生在各學期中的學習負擔盡量均勻
是使課程盡可能地集中在前幾個學期中。
若根據給定的條件問題無解,則報告適當的資訊;否則將教學計畫輸出到使用者指定 的檔案中。計畫的**格式可以自己設計。可設學期總數不超過12,課程總數不超過100。如果輸入的先修課程號不在該專業 開設的課程序列中,則作為錯誤處理。
資料結構型別定義:
typedef struct vnode vexnode; //頂點表結點
typedef struct arcnode edgenode;//鄰接表結點
typedef struct message message; //每學期的學期資訊
typedef struct algraph algraph; //圖
int locate(char* ch) //將c1c2c3……等變為1 2 3…
void creat_graph1(algraph* g) //輸入學期總數 學分上限 課程總數(頂點數量)
void creat_graph2(algraph* g) //從檔案讀取課程資訊
void top_sort(vexnode g, int n,vexnode temp)//用有入度域的aov網進行拓撲排序,輸出並存到陣列temp中
void sort1(vexnode t, message* s, int vexnum)//按各學期負擔均勻輸出並儲存教學計畫
void sort2(vexnode* t,message *s,int vexnum)//按課程盡可能集中在前幾學期輸出並儲存教學計畫
int main()//主函式
測試資料:
學期總數:6,學分上限:10,學期總數:14,課程號從c01到c14.
課程的先修關係如下:
資料檔案儲存在d:\123\資料.txt中
執行結果:
實驗**:
注意注釋!
#include
#include
#include
#define maxclass 100
//課程總數不超過100
#define maxsemester 12
//學期總數不超過12
// 鄰接表表示
typedef
struct arcnode edgenode;
//鄰接表結點
struct arcnode
;typedef
struct vnode vexnode;
typedef
struct message message;
typedef
struct algraph algraph;
intlocate
(char
* ch)
void
creat_graph1
(algraph* g)
if(g->extrainfo->semesternum > maxsemester)
}void
creat_graph2
(algraph* g)
g->vertics =
(vexnode*
)malloc
(sizeof
(vexnode)
* g->vexnum)
;for
(int i =
0; i < g->vexnum; i++
) g->vertics[i]
.firstedge =
null
;//初始化
for(
int i =
0; i < g->vexnum; i++
) edgenode* p =
(edgenode*
)malloc
(sizeof
(edgenode));
//更新鄰接表結點
p->adjvex = i;
p->next = g->vertics[s]
.firstedge;
g->vertics[s]
.firstedge = p;
g->arcnum++;}
}fclose
(fp)
;for
(int i =
0; i < g->vexnum; i++
)//更新入度
g->vertics[i]
.indegree=0;
for(
int i =
0; i < g->vexnum; i++)}
}//indegree又是入度又是棧的next
void
top_sort
(vexnode g,
int n,vexnode *temp)
//用有入度域的aov網進行拓撲排序,輸出並存到陣列temp中
printf
("aov拓撲排序結果為:");
while
(top !=-1
)//當鍊棧非空時
p = p->next;
//查詢下乙個鄰接邊節點}}
if(m < n)
printf
("aov 網有迴路!!!!!");
}void
sort2
(vexnode* t,message *s,
int vexnum)
//按課程盡可能集中在前幾學期輸出並儲存教學計畫}}
void
sort1
(vexnode* t, message* s,
int vexnum)
//按各學期負擔均勻輸出並儲存教學計畫}if
(i < vexnum % s->semesternum)
//加入平均後多餘的課程}}
intmain()
C 十字鍊錶實現教學計畫編制
問題描述 大學的每個專業都要制定教學計畫。假設任何專業都有固定的學習年限,每學年含兩學期,每學期的時間長度和學分上限值均相等。每個專業開設的課程都是確定的,而且課程在開設時間的安排必須滿足先修關係。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒有。每門課恰好佔乙個學期。試在這樣的前提下設計...
Lesson Plan 教學計畫 翻譯
計畫是老師的乙個非常重要的技能。這篇文章討論了一些常用課規劃問題 怎樣進入英語課程?每一種教學及課程都是不一樣的。而內容就是要看老師在課堂上要達到什麼樣的目標。然後,作一些推論也是非常的重要。那些感興趣及加入的學生,對於他們所說的東西都是非常的感興趣,並且希望能夠做得更好,所以他們就學得非常的快。要...
Lesson Plan 教學計畫 翻譯
計畫是老師的乙個非常重要的技能。這篇文章討論了一些常用課規劃問題 怎樣進入英語課程?每一種教學及課程都是不一樣的。而內容就是要看老師在課堂上要達到什麼樣的目標。然後,作一些推論也是非常的重要。那些感興趣及加入的學生,對於他們所說的東西都是非常的感興趣,並且希望能夠做得更好,所以他們就學得非常的快。要...