91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 253KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-20
  • 語言: 其他
  • 標簽: c++??數據結構??

資源簡介

問題描述:大學的每個專業都要制定教學計劃。假設任何專業都有固定的學習年限,每學年含兩個學期,每學期的時間長度和學分上限值均相等。每個專業開設的課程都是確定的,而且課程在開設時間的安排上必須滿足先修關系。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒有。每門課程恰好占一個學期。試在這樣的前提下設計一個教學計劃編制程序。 基本要求:輸入參數包括學期總數,一學期的學分上限,每門課程的課程號、學分和直接先修課的課程號;允許兩種策略,一是使學生在各學期的學習負擔盡量均勻,二是使課程盡量集中在前幾個學期;若根據給定的條件問題無解,則報告適當的信息,否則輸出教學計劃表(如每個學期所開設的課程的課程號及學分),同時將教學計劃輸出到用戶指定的文件中。教學計劃的表格格式自行設定, 可以從鍵盤讀取數據也可以從文件讀取數據, 結果保存到文件中。 測試數據:學期總數為6,學分上限為10,該專業共開設12門。以10級某專業必修課與選修課為例,選擇12門課程及相應學分,制定一個表明各門課程先后約束關系的有向圖。 提高要求:產生多種不同的方案,并使方案之間的差異盡可能地大。 考核要求: (1)達到基本要求,成績為良好,如果不能把結果保存到文件中,成績為不及格。 (2)在達到基本要求的基礎上,產生3種以上的解決方案,且用戶界面友好,成績為優秀。

資源截圖

代碼片段和文件信息

#include
#include
using?namespace?std;
ofstream?output(“安排教學計劃結果.txt“);//將輸出結果保存在“安排教學計劃結果”文本文檔上

template?
class?CirQueue
{
private:
T?*base;?//?存儲空間基址
int?front;?//?隊頭指針
int?rear;?//?隊尾指針
int?queuesize;?//?隊容量
public:
CirQueue(int?m=100);//構造空隊列
~CirQueue();?//?析構函數,釋放鏈隊各結點的存儲空間
void?EnQueue(T?x);?//?元素x入隊
T?DeQueue();?//?隊頂元素出隊
int?QueueEmpty();?//?判隊空
};

template?
CirQueue::CirQueue(int?m)?//構造函數
{
base=new?T[m];
front=rear=0;
queuesize=m;
}

template?
CirQueue::~CirQueue()
{
delete?[]?base;
rear=0;
front=0;
queuesize=0;
}

template?
void?CirQueue::EnQueue(T?x)
{
if((rear+1)%queuesize==front)?throw?“上溢,無法入隊“;
base[rear]=x;
rear=(rear+1)%queuesize;
}

template?
T?CirQueue::DeQueue()
{
T?x;
if(front==rear)?throw?“下溢,不能出隊“;
x=base[front];
front=(front+1)%queuesize;
return?x;
}

template?
int?CirQueue::QueueEmpty()
{
if(front==rear)?return?1;
else?return?0;
}



struct?Course?//課程的相關信息
{
int?number;?//編號(課程信息的主鍵,有系統分配,不能更改)
char?*name;?//名稱
int?Xuefen;?//學分
int?num;
};

#define?MAX_VERTEX_NUM?100//最大課程數
struct?ArcNode
{
int?adjvex;?//該弧所指向的后繼課程的在頂點集的位置
struct?ArcNode?*nextarc;?//指向下一個課程的指針
};

template?
struct?VNode
{
T?data;?//存放課程信息?T=Course結構體類型
ArcNode?*firstarc;?//指向第一條依附該課程的后繼課程指針
};

template?
struct?ALGraph_1
{
VNode?vertices[MAX_VERTEX_NUM];?//課程總數頂點集
int?vexnum;?//課程總數
int?arcnum;?//先修關系數
};

template?
class?ALGraph
{
ALGraph_1?algraph;
public:
void?CreateGraph(char*f1char*f2);?//課程是頂點集,先修關系來建立圖的鄰接表
void?CreateGraph1();//手動輸入課程信息
int?LocateVex?(int?u);?//返回課程編號在圖中的數組下標
void?DisPlay_1();?//顯示課程的編號,名稱,學分
void?InsertVex(char?*f1char*f2);?//編輯某科課程信息>>增加課程
void?DeleteVex(char*f1char*f2);?//編輯某科課程信息>>刪除課程
void?AlterVex(char*f1char*f2int?childMendu);?//編輯某科課程信息>>修改課程
void?FindInDegree(int?indegree[]);?//求頂點的入度
void?TopologicalSort(int?Maxxueint?Maxfenint?choice);?//不同教學計劃類別輸出不同的教學計劃
};

template??//返回課程編號在圖中的數組下標
int?ALGraph::LocateVex(int?u)
{
for(int?i?=?0;iif(algraph.vertices[i].data.number==u)?//尋找編號是否相等
return?i;
}


template?
void?ALGraph::CreateGraph(char*f1char*f2)?//讀取數據,課程是頂點集,先修關系來建立鄰接表
{
ifstream?in(f1);?//讀取課程信息文件.txt
if(!in)?{?cout<<“無法打開文件,請建立文件!“<char?sp[3][20];
int?i=0;
while(in>>sp[0])?//創建頂點集
{
algraph.vertices[i].data.number=atoi(sp[0]);?//C++文件的相關操作
in>>sp[1];
algraph.vertices[i].data.name=new?char[strlen(sp[1])+1];?//申請名字的內存
strcpy(algraph.vertices[i].data.namesp[1]);
in>>sp[2];?algraph.vertices[i].data.Xuefen=atoi(sp[2]);
algraph.vertices[i].firstarc=false;
i++;
}
algraph.vexnum=i;
in.close();
ifstream?in1(f2);?//讀取課程先修關系文件.txt
if(!in1)?{?cout<<“不能打開“<char?p[2][5];
int?j;
int?k=0;
while(in1>>p[0])?//創建鄰接表
{
in1>>p[1];?//C++文件的相關操作
i?=?LocateVex(atoi(p[0]));
j?=?LocateVex

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-03-27?23:36??2011081426曾毅\
?????文件?????????563??2013-03-24?15:23??2011081426曾毅\readme.txt
?????文件??????405324??2013-03-24?16:28??2011081426曾毅\數據結構與算法課程設計報告.doc
?????文件????????1284??2013-03-21?15:03??2011081426曾毅\新建?文本文檔.txt
?????文件???????16978??2013-03-21?16:08??2011081426曾毅\源代碼.cpp
?????文件?????????201??2013-03-21?14:47??2011081426曾毅\課程信息文件.txt
?????文件??????????48??2013-03-18?15:07??2011081426曾毅\課程先修關系文件.txt

評論

共有 條評論