標籤:作業 工作量 不能 數值 網路 a+b sql learn gre
資料結構C/C++編程作業代寫、C++處理英文作業
1.課程設計題目
從下面兩道題目中任選一題完成。
1.1 高校考試報名系統
高校考試報名給教務管理部門增加了很大的工作量,報名資料手工錄入既費時又會不可避免地出現錯誤,同時也給不少學生以可乘之機。本項目是對考試報名管理的簡單類比,用菜單選擇方式完成下列功能:
(1)輸入考生資訊,每條考生資訊由准考證號(五位元字組成)、姓名、性別、年齡、報考科目等資訊組成;
(2)輸出考生資訊;
(3)查詢考生資訊;
(4)添加考生資訊;
(5)修改考生資訊;
(6)刪除考生資訊;
(7)對考試資訊按照準考證號進行排序。
要求:介面友好,每步給出適當的操作提示,並且系統具有一定的容錯能力。
1.2北京景點查詢系統
在旅遊景區,經常會遇到遊客打聽從一個景點到另一個景點的最短路徑和最短距離,這類遊客不喜歡按照導遊圖的線路來遊覽,而是挑選自己感興趣的景點遊覽。為於協助這類遊客資訊查詢,就需要計算出所有景點之間最短路徑和最短距離。建立北京景區旅遊資訊管理系統,實現的主要功能包括制訂旅遊景點導遊線路策略和制訂景區道路鋪設策略。具體實現的功能模組如下:
(1)建立景區景點分布圖,要求至少分布圖中至少有10個景點;
(2)輸出景區景點分布圖,用鄰接矩陣表示;
(3)輸出從某點開始的導遊線路圖;
(4)判斷導遊線路圖有無迴路;
(5)求兩個景點間的最短路徑和最短距離;
(6)輸出道路修建規劃圖。
要求主程式用菜單選項供使用者選擇功能模組,介面友好,每步給出適當的操作提示,系統具有一定的容錯能力。
2.課程設計報告書寫規範
課程設計報告包括該題目的需求分析、概要設計、詳細設計、程式測試、感想與體會幾部分內容。下面以“疏鬆陣列運算器”為例說明如何寫課程設計報告。
題目要求:設計一個疏鬆陣列計算機,實現兩個疏鬆陣列的加法、減法、乘法以及矩陣的轉置運算。採用菜單為應用程式的介面,使用者通過對菜單進行選擇,分別實現矩陣的相加、相減、相乘以及矩陣轉速運算。
2.1需求分析
1. 疏鬆陣列是指稀疏因子小於等於0.5的矩陣。利用“稀疏”特點進行儲存和計算可以大大節省儲存空間,提高計算效率。實現一個能進行疏鬆陣列基本運算的運算器。
2. 以“帶行邏輯連結資訊”的三元組順序表表示疏鬆陣列,實現矩陣轉置,以及兩個矩陣的加、減、乘的運算。疏鬆陣列的輸入形式採用三元組表示,運算結果以陣列形式列出。
3. 示範程式以使用者和電腦的對話方式進行,數組的建立方式為邊輸入邊建立。首先輸入矩陣的行數和列數,並判別給出的兩個矩陣的行列數是否與所要求的運算相匹配。
4. 程式可以對三元組的輸入屬性不加以限制;根據對矩陣的行列,三元組作之間插入排序,從而進行運算時,不會產生錯誤。
5. 在用三元組表示疏鬆陣列時,相加、相減和相乘所產生的結果矩陣另外產生。
6. 運行環境:VC6.0++。
2.2概要設計
疏鬆陣列元素用三元組表示:
typedef struct{
int i;//非零元的行下標
int j;//非零元的列下標
int e;//矩陣非零元
}Triple;
疏鬆陣列採用三元組順序表格儲存體:
#define MSXSIZE 12500//假設非零元個數的最大值為200
#define MAXRC 10 //假定矩陣的最大行數為10
typedef struct
{
int mu ; //矩陣的行數
int nu ; //矩陣的列數
int tu ; //矩陣的非零元素個數
Triple data[MAXSIZE+1]; //非零元三元組表,data[0]沒有用
int rpos[MAXRC+1]; //各行第一個非零元素的位置表
}Tabletype;
系統主要函數及功能如下:
Menu( ):主控菜單,接收使用者的選項;
Input_Matrix( ):輸入矩陣;
Print_matrix( ):輸出矩陣;
Cal_matrix( ):計算矩陣每行第一個非零元在三元組中的位序號;
TransposeMatrix( ):矩陣轉置;
Add_Matrix( ):矩陣加法運算;
Sub_Matrix( ):矩陣減法運算;
Multi_Matrix( ):矩陣乘法運算。
模組的調用關係1所示。
圖1 程式調用模組
2.3詳細設計
1. 主函數設計
//*****************************************
//* 矩陣運算主函數 *
//*****************************************
主函數中,實現使用者菜單菜單的列印,並根據使用者的選項執行相應的功能,主函數力求簡潔、清晰。
void main( )
{
num=Menu();//列印主菜單
while(num)
{
switch(num)
{
case 1:
Multi_Matrix();//矩陣相乘
break;
case 2:
TransposeMatrix();//矩陣轉置
break;
case 3:
Add_Matrix();//矩陣加法
break;
case 4:
Sub_Matrix();//矩陣減法
case 0:
break;
}//switch
num=Menu();
}//while
}
2. 主菜單設計
主控菜單是用來輸出提示資訊和處理輸入,此函數返回使用者的選項,提供給main函數中的switch語句。對於不符合要求的選項,提示輸入錯誤並要求使用者重新輸入。將此函數與main函數合在一起,編譯運行程式,即可檢查並驗證菜單選項是否正確。
主菜單如下:
//*****************************************
//* 列印主控菜單函數 *
//*****************************************
int menu( )
{
printf("\n 主菜單");
printf("\n*********************");
printf("\n1. 矩陣乘法");
printf("\n2. 矩陣轉置");
printf("\n3. 矩陣加法");
printf("\n4. 矩陣減法");
printf("\n0. 退出");
printf("\n*********************");
scanf("%d",&num);
while(num<0||num>4)//輸入非法,重新輸入
scanf("%d",&num);
return num;
}
3. 矩陣乘法運算函數
//*****************************************
//* 矩陣乘法運算演算法 *
//*****************************************
Status Multi_Matrix()
{
Input_Matrix(&a);//輸入矩陣a
Input_Matrix(&b); //輸入矩陣b
Cal_matrix(&a);//計算矩陣a每行第一個非零元的位序號
Cal_matrix(&b);//計算矩陣b每行第一個非零元的位序號
if (a.nu!=b.mu)//不符合矩陣乘法條件,不能相乘
return ERROR;
c.mu=a.mu; //對矩陣c初始化
c.nu=b.nu;
c.tu=0;
if(a.tu*b.tu!=0){
for(arow=1;arow<=a.mu;arow++){ /*處理矩陣a的每一行*/
for (p=1;p< MAXRC+1;p++) /*當前行各元素累加器清零*/
ctemp[p]=0;
c.rpos[arow]=c.tu+1;
if(arow<a.mu )
tp=a.rpos [arow+1];
else
tp=a.tu +1;
for(p=a.rpos[arow]; p<tp;p++){ //求得c中第crow行的非零元
brow=a.data[p].j;
if(brow<b.nu)
t=b.rpos[brow+1];
else
t=b.tu+1;
for (q=b.rpos[brow];q<t;q++){
ccol=b.data[q].j; /*乘積元素在矩陣c中的列號*/
ctemp[ccol]+=a.data[p].e*b.data[q].e;
} /*for q*/
}//for p
for(ccol=1;ccol<=c.nu;ccol++)
if(ctemp[ccol])/*壓縮儲存該行非零元*/
{
if((c.tu)>MAXSIZE)
exit(1);
c.tu++;
c.data[c.tu].i=arow;
c.data[c.tu].j=ccol;
c.data[c.tu].e=ctemp[ccol];
}/*end if*/
}/*for arrow*/
}/*if*/
Print_matrix(a);
Print_matrix(b);
Print_matrix(c);
}
4. 矩陣轉置演算法
//*****************************************
//* 矩陣轉置演算法 *
//*****************************************
void TransposeMatrix(){
Input_Matrix(&a);//輸入矩陣a
b.mu=a.nu;
b.nu=a.mu;
b.tu=a.tu;
if(b.tu){
q=1; /*b.data的下標*/
for(col=1;col<=a.nu;col++) //對a的每一列
for(p=1;p<=a.tu;p++) /*p為a的下標*/
if( a.data[p].j==col){ //尋找矩陣a中列為col的非零元
b.data[q].i=a.data[p].j;
b.data[q].j=a.data[p].i;
b.data[q].e=a.data[p].e;
q++;
}//if(p)
}//if(b.tu)
Print_matrix(b); //輸出a的轉置矩陣
}
5. 矩陣加法演算法
//*****************************************
//* 矩陣加法運算函數 *
//* c=a+b *
//*****************************************
Status Add_Matrix(){
Input_Matrix(&a); //輸入矩陣a
Input_Matrix(&b); //輸入矩陣b
if(a.mu !=b.mu ||a.nu !=b.nu ) //不滿足矩陣加法條件
return ERROR;
c.mu =a.mu ;
c.nu =a.nu ;
ta=1;tb=1;tc=1;
if(a.tu *b.tu !=0){
while((ta<=a.tu) && (tb<=b.tu)){
if(a.data[ta].i==b.data[tb].i){
if(a.data[ta].j==b.data[tb].j){
temp=a.data[ta].e+b.data[tb].e;
if(temp!=0){
c.data[tc].i=a.data[ta].i;
c.data[tc].j=a.data[ta].j;
c.data[tc].e=temp;
tc++;
}//end if (temp)
ta++;tb++;
}//end if
else{
if(a.data[ta].j<b.data[tb].j){
c.data[tc].i=a.data[ta].i;
c.data[tc].j=a.data[ta].j;
c.data[tc].e=a.data[ta].e;
ta++;tc++;
}//end of else if
else{
c.data[tc].i=b.data[tb].i;
c.data[tc].j=b.data[tb].j;
c.data[tc].e=b.data[tb].e;
tb++;tc++;
}//
}
}//end if
else{
if(a.data[ta].i<b.data[tb].i){
c.data[tc].i=a.data[ta].i;
c.data[tc].j=a.data[ta].j;
c.data[tc].e=a.data[ta].e;
tc++;ta++;
}
else{
c.data[tc].i=b.data[tb].i;
c.data[tc].j=b.data[tb].j;
c.data[tc].e=b.data[tb].e;
tc++;tb++;
}
}
}//while
while(ta<=a.tu){ //處理a中剩餘非零元
c.data[tc].i=a.data[ta].i;
c.data[tc].j=a.data[ta].j;
c.data[tc].e=a.data[ta].e;
tc++;ta++;
}
while(tb<=b.tu){ //處理b中剩餘非零元
c.data[tc].i=b.data[tb].i;
c.data[tc].j=b.data[tb].j;
c.data[tc].e=b.data[tb].e;
tc++;tb++;
}
}//
c.tu=tc;
Print_matrix(c);
}
6. 矩陣輸入演算法
用於輸入矩陣的行數、列數、非零元個數,以及每個非零元素。輸入演算法如下:
//*****************************************
//* 矩陣輸入演算法 *
//*****************************************
Status Input_Matrix(Tabletype *t)
{
scanf(t->mu, t->nu, t->tu); //獲得矩陣行列數、非零元個數
for(i=1;i<=tu;i++)
scanf(t->data [i].i, t->data [i].j,t->data [i].e);
return OK;
}
7. 矩陣輸出演算法
將三元組以矩陣方式輸出在螢幕上,演算法如下:
//*****************************************
//* 矩陣輸出函數 *
//*****************************************
Status Print_matrix(Tabletype m){
k=1;
for(i=1;i<=m.mu;i++){
for(j=1;j<=m.nu ;j++) {/*非零元素*/
if((m.data[k].i==i)&&(m.data[k].j==j)){
printf(m.data[k].e);
k++;
}
else
printf(“0”); /*零元素*/
}
printf("\n");
}
}
8. Cal_matrix函數
在矩陣乘法運算時,需要統計矩陣每行第一個非零元在三元組表中的位序號,演算法如下:
void cal_matrix(Tabletype *m){
//計算矩陣中每一行中第一個非零元的位序號
for(row=1;row<=m->mu ;row++)
num[row]=0;
for(t=1;t<=m->tu ;t++)
num[m->data [t].i]++;
m->rpos [1]=1;
for(row=2;row<=m->mu ;row++)
m->rpos [row]=m->rpos [row-1]+num[row-1];
}
2.4程式測試
在這部分給出程式運行結果的螢幕,以及測試分析。
2.5感想與體會
這部分給出演算法設計過程中的問題、程式調試過程的問題與收穫。
3.要求
來源程式沒有語法錯誤,運行結果正確;
設計報告按照規範書寫。
課程設計最後提交內容包括:來源程式與課程設計報告。
http://www.daixie0.com/contents/13/1307.html
我們的方向領域:window編程 數值演算法 AI人工智慧 金融統計 計量分析 大資料 網路編程 WEB編程 通訊編程 遊戲編程多媒體linux 外掛編程 程式API影像處理 嵌入式/單片機 資料庫編程 控制台 進程與線程 網路安全 組合語言 硬體編程 軟體設計 工程標準規等。其中代寫代做程式設計語言或工具包括但不限於以下範圍:
C/C++/C#代寫
Java代寫
IT代寫
Python代寫
輔導編程作業
Matlab代寫
Haskell代寫
Processing代寫
Linux環境搭建
Rust代寫
Data Structure Assginment 資料結構代寫
MIPS代寫
Machine Learning 作業 代寫
Oracle/SQL/PostgreSQL/Pig 資料庫代寫/代做/輔導
Web開發、網站開發、網站作業
ASP.NET網站開發
Finance Insurace Statistics統計、迴歸、迭代
Prolog代寫
Computer Computational method代做
因為專業,所以值得信賴。如有需要,請加QQ:99515681 或郵箱:[email protected]
:codinghelp
資料結構C/C++編程作業代寫、C++處理英文作業