教學計畫編制問題(C語言)

2021-10-16 05:00:19 字數 3130 閱讀 9836

輸入引數應包括:學期總數,一學期的學分上限,每門課的課程號(可以是固定佔 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 教學計畫 翻譯

計畫是老師的乙個非常重要的技能。這篇文章討論了一些常用課規劃問題 怎樣進入英語課程?每一種教學及課程都是不一樣的。而內容就是要看老師在課堂上要達到什麼樣的目標。然後,作一些推論也是非常的重要。那些感興趣及加入的學生,對於他們所說的東西都是非常的感興趣,並且希望能夠做得更好,所以他們就學得非常的快。要...