




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、封 皮(按學校要求手工填寫) 成 績 評 定 表學生姓名邵澤宇班級學號1203060107專 業(yè)通信工程課程設計題目向量類的設計與實現(xiàn)評語組長簽字:成績?nèi)掌?20 年 月 日課程設計任務書學 院信息科學與工程專 業(yè)通信工程學生姓名邵澤宇班級學號1203060107課程設計題目向量類的設計與實現(xiàn)實踐教學要求與任務1.構(gòu)造函數(shù)實現(xiàn)n維向量初始化構(gòu)造。這里n可變。2.析構(gòu)函數(shù)實現(xiàn)向量動態(tài)存儲釋放。3.拷貝函數(shù)實現(xiàn)向量的拷貝構(gòu)造。4.重載賦值運算符=。實現(xiàn)兩個向量之間的賦值。5.編寫成員函數(shù)求兩個向量內(nèi)積。6.編寫成員函數(shù)求兩個向量外積。7.編寫成員函數(shù)求兩個向量的和。8.編寫成員函數(shù)求兩個向量的差。
2、9.編寫成員函數(shù)判斷兩個向量之間的線性相關(guān)性。0.編寫一個主函數(shù)測試多項式類的上述功能。工作計劃與進度安排第17周:分析題目,查閱課題相關(guān)資料,進行類設計、算法設計;第18周:程序的設計、調(diào)試與實現(xiàn);第19周:程序測試與分析,撰寫課程設計報告,進行答辯驗收。指導教師: 201 年 月 日專業(yè)負責人:201 年 月 日學院教學副院長:201 年 月 日摘 要很多自然科學和工程技術(shù)中的問題的解決最終都歸結(jié)到向量問題的處理,向量在解物理中的許多問題例如物理中力、速度、加速度、位移都是利用向量解決合力、合速度之類的問題。本文采用C+語言實現(xiàn)了對向量的基本操作,采用Visual C+ 6.0的控制臺工程
3、和MFC工程分別實現(xiàn)了對向量的處理。關(guān)鍵詞:隊列;類模板;控制臺工程;MFC工程目 錄1 需求分析12 算法基本原理13 類設計14 基于控制臺的應用程序24.1 類的接口設計24.2 類的實現(xiàn)34.3 主函數(shù)設計54.4 基于控制臺的應用程序測試65 基于MFC的應用程序95.1 基于MFC的應用程序設計95.1.1 MFC程序界面設計95.1.2 MFC程序代碼設計105.2基于MFC的應用程序測試11結(jié) 論14參考文獻151. 需求分析1.向量英文:Vector,又叫矢量,顧名思義,有方向的量。但是在計算機里vector又可以翻譯為容器,或者說理解為容器,其實這不是一種很好的理解么,純數(shù)
4、學上的向量可以由2維3維推廣到多維,實際上它不就是一個實數(shù)的容器,在推廣到其他領(lǐng)域,向量即一個若干相關(guān)因素的容器,也就是說向量可以應用在很多領(lǐng)域中,可以輕松直觀的描述事物的信息,也可以存放信息,例如,二維三維中可以描述點(坐標),物體的位置,描述顏色(RGB,紅綠藍,),在多維的話,可描述的范圍就更廣了,最簡單的如描述一個人的性格,或者能力。 2.類是C+中十分重要的概念。它是實現(xiàn)面向?qū)ο蟪绦蛟O計的基礎(chǔ)。C+對C的改進。最重要的就是增加了“類”這樣一種類型。類是所有面向?qū)ο蟮恼Z言的共同特征。所有面向?qū)ο蟮恼Z言都提供了這種類型。如果一種計算機語言中不包含類。它就不能稱為面向?qū)ο蟮恼Z言。2. 算法
5、基本原理1.初始化一個名叫XiangL的類。為了便于類中的成員更改及操作。將要用的兩個向量數(shù)組設為public型。即xN和yN。另外由于n維向量的n值需要多次重復利用??梢园裯設為全局變量。2.析構(gòu)函數(shù)為了實現(xiàn)向量動態(tài)存儲釋放。其實可以直接讓其函數(shù)體內(nèi)為空。3.拷貝函數(shù)實現(xiàn)向量的拷貝構(gòu)造。為了方便實現(xiàn)。用了一個選擇語句讓用戶選擇要拷貝的是x還是y向量。4.重載賦值運算符=。實現(xiàn)兩個向量之間的賦值。為了方便返回值。定義了一個XLAdd類。其類里有個公有成員數(shù)組。便于實現(xiàn)賦值后的輸出。5.編寫成員函數(shù)求兩個向量內(nèi)積。利用for循環(huán)實現(xiàn)對兩個向量的內(nèi)積求和。6.編寫成員函數(shù)求兩個向量外積。由于內(nèi)積=
6、|a|*|b|*cosa。而外積=|a|*|b|*sina。而上面已經(jīng)求了內(nèi)積。根據(jù)上面的關(guān)系可推導出外積。7.編寫成員函數(shù)求兩個向量的和。利用for循環(huán)實現(xiàn)。8.編寫成員函數(shù)求兩個向量的差。利用for循環(huán)實現(xiàn)。9.編寫成員函數(shù)判斷兩個向量之間的線性相關(guān)性。為了簡化判斷。選擇向量的前幾項進行判斷。另外如果內(nèi)積為零的話。直接表示為兩個向量是垂直的關(guān)系。3. 類設計 1.對于基類XiangL來講。為了方便實現(xiàn)操作。我們只是設了公有成員。有公有成員數(shù)據(jù) xN、yN用于存放向量。其余則為公有函數(shù)。XingL()為構(gòu)造函數(shù)。XLCopy(int a,int b,int d)為拷貝函數(shù)。XLAdd ope
7、rator =(int a)為運算符”=”的重載。XLNeiJi(int a,int b,int d)為求兩個向量的內(nèi)積的函數(shù)。XLWaiJi(int a,int b,int c,int d)為求兩個向量的外積的函數(shù)。XLPlus(int a,int b,int d)為求兩個向量的和的函數(shù)。XLRedu(int a,int b,int d)為求兩個向量的差的函數(shù)。XLPanDuan(int a,int b,int c); 為判斷兩個向量的線性關(guān)系的函數(shù)。XiangL()析構(gòu)函數(shù)。 2.至于外加的類XLAdd。了額方便進行對于”=”重載后能有很好的一個返回值而加的。其含有一個公有成員數(shù)據(jù)dN。用
8、于存放一個向量。便于其的輸出與處理。4.基于控制臺的應用程序整個程序分為三個大部分。第一個部分即為對類XiangL的定義。第二個部分則是對類XiangL中的各個成員函數(shù)進行定義。第三個部分即為主函數(shù),主函數(shù)中用了switch語句讓用戶選擇要執(zhí)行的函數(shù)。4.1 類的初始定義#include#includeusing namespace std;#define N 100int n;class XLAdd /備用的向量類。public: int dN;class XiangL /類XiangL的聲明。public: int xN,yN; XiangL(); /構(gòu)造函數(shù)。void XLCopy(in
9、t a,int b,int d); /拷貝函數(shù)。XLAdd operator =(int a); /運算符”=”的重載。int XLNeiJi(int a,int b,int d); /求兩個向量的內(nèi)積。float XLWaiJi(int a,int b,int c,int d); /求兩個向量的外積。void XLPlus(int a,int b,int d); /求兩個向量的和。void XLRedu(int a,int b,int d); /求兩個向量的差。 void XLPanDuan(int a,int b,int c); /判斷兩個向量的線性關(guān)系。XiangL(); /析構(gòu)函數(shù)。s
10、;4.2 類的實現(xiàn)XiangL :XiangL()XiangL :XiangL()void XiangL :XLCopy(int a,int b,int d) /拷貝函數(shù)。int i; char c;int zN;cout選擇要拷貝的向量。選x或y。c;switch(c)case x: for(i=0;id;i+) zi=ai; break;case y: for(i=0;id;i+) zi=bi; break;default :break;XLaddPrint(z,d);XLAdd XiangL :operator =(int a) /重載=。int i;XLAdd b;for(i=0;in
11、;i+)b.di=ai;return b;int XiangL :XLNeiJi(int a,int b,int d) /求內(nèi)積。int i,c;c=0;for(i=0;id;i+)c+=(ai*bi);return c;float XiangL :XLWaiJi(int a,int b,int c,int d) /求外積。int i,sx,sy;sx=0; sy=0;double s1,s2,z,y;for(i=0;id;i+)sx+=(ai*ai);sy+=(bi*bi);s1=sqrt(float)sx); s2=sqrt(float)sy); z=(float)acos(c/(s1*s
12、2);y=(float)sin(z)*(s1*s2);return y;Void XiangL:XLPlus(int a,int b,int d) /求和。int i; int yN;for(i=0;id;i+)yi=ai+bi;XLaddPrint(y,d);Void XiangL :XLRedu(int a,int b,int d) /求差。int i; int yN;for(i=0;in;i+)yi=ai-bi;XLaddPrint(y,d);Void XiangL :XLPanDuan(int a,int b,int c) /判斷線性關(guān)系。if(c=0) cout垂直。endl;els
13、e if(a0/a0)=(b1/b1) cout平行或在一條線。endl;else cout無線性關(guān)系。endl;void XLaddPrint(int r,int b) /輸出向量。int i;cout向量為。(;for(i=0;ib;i+)coutri,;cout)endl;int IfContinue() /判斷是否繼續(xù)執(zhí)行函數(shù)的函數(shù)。char i;cout繼續(xù)執(zhí)行函數(shù)請輸入Y/y:i;if(i=Y|i=y) return 0;else exit(1);4.3 主函數(shù)的設計#include#includeusing namespace std;#define N 100int n;voi
14、d main()int i,c,n;XiangL z;int aN,bN;while(1) cout1 初始化。 2 進行拷貝。 3 重載=。 ; cout4 求內(nèi)積。5 求外積。6 求和。7 求差。8 表示線性相關(guān)性。c; i=s.XLNeiJi(a,b,n); switch(c) case 1:cout請輸入n維向量的n值:n;cout請輸入x向量其向量有n個值。endl; /輸入值。 for(i=0;iai; cout請輸入y向量 其向量有n個值。endl; for(i=0;ibi; IfContinue(); break; case 2: s.XLCopy(a,b,n); IfCont
15、inue();break; case 3: z=a; XLaddPrint(a,n);IfContinue();break; case 4: cout內(nèi)積為。s.XLNeiJi(a,b,n)endl; IfContinue();break; case 5: cout外積為。s.XLWaiJi(a,b,i,n)endl; IfContinue();break; case 6: s.XLPlus(a,b,n); IfContinue();break; case 7: s.XLRedu(a,b,n); IfContinue();break; case 8: s.XLPanDuan(a,b,i); I
16、fContinue();break; default: break; 4.4 基于控制臺的應用程序測試程序運行結(jié)果如圖13所示。圖1圖2圖35.1基于MFC的應用程序設計5.1.1 MFC程序界面設計首先在VC中建立MFC AppWizard(exe)工程,名稱為向量,并在向?qū)У腟tep1中選擇Dialog based,即建立基于對話框的應用程序,如下圖45所示。圖4 建立MFC AppWizard(exe)工程圖5 建立基于對話框的應用程序?qū)υ捒蛸Y源中的默認對話框利用工具箱改造成如下界面,如圖6所示。圖6所示的界面中包含了個Static Text控件,個Button控件,和14個Edit
17、Box控件,控件的基本信息列表如下表1所示。表1 控件基本信息控件類別控件ID控件Caption說明Static TextIDC_STATIC向量x:向量y:ButtonIDC_BUTTON_Plus計算向量相加IDC_BUTTON_Redu計算向量相減IDC_BUTTON_NeiJi計算兩個向量的內(nèi)積IDC_BUTTON_WaiJi計算兩個向量的外積Edit BoxIDC_EDIT_A00 IDC_EDIT_A11用于存放向量IDC_EDIT_b0用于存放內(nèi)積IDC_EDIT_c0用于存放外積 MFC程序代碼設計為了能夠?qū)υ捒蚪缑嫔系目丶軌蚺c代碼聯(lián)系起來,需要為14個Edit Box控件
18、建立Member Variables,按Ctrl+w鍵進入MFC ClassWizard界面,選擇Member Variables選項卡,可顯示成員變量設置界面。通過該界面設置與14個Edit Box控件對應的成員變量,具體如表2所示。表2 控件基本信息控件ID成員變量類型成員變量名稱IDC_EDIT_A01IDC_EDIT_A3intx_1 x_3IDC_EDIT_A04IDC_EDIT_A6inty_1y_3IDC_EDIT_A07IDC_EDIT_A9inth_1 h_3IDC_EDIT_A10IDC_EDIT_A12intc_1 c_3IDC_EDIT_b0inti_NJIDC_EDI
19、T_c0floatf_WJ下面是編寫代碼的重要階段,可以借鑒在設計基于DOS界面的控制臺應用程序的代碼,并將其作必要的改寫,具體改寫的步驟與內(nèi)容如下。1. 編寫求和的消息處理函數(shù),實現(xiàn)向量求和,具體代碼如下void CMyDlg:OnAddPlus() / TODO: Add your control notification handler code hereUpdateData(true);h_1 = x_1+y_1;h_2 = x_2+y_2;h_3 = x_3+y_3;UpdateData(false);2. 編寫求差的消息處理函數(shù),實現(xiàn)向量求差,具體代碼如下void CMyDlg:O
20、nReduceXL() / TODO: Add your control notification handler code hereUpdateData(true);c_1 = x_1-y_1;c_2 = x_2-y_2;c_3 = x_3-y_3;UpdateData(false);3. 編寫求內(nèi)積的消息處理函數(shù),實現(xiàn)求兩個向量的內(nèi)積,具體代碼如下void CMyDlg:OnNeiJiXL() / TODO: Add your control notification handler code hereUpdateData(true);i_NJ = (x_1*y_1) + (x_2*y_2
21、) + (x_3*y_3);UpdateData(false);4. 編寫求外積的消息處理函數(shù),實現(xiàn)求兩個向量的外積,具體代碼如下void CMyDlg:OnWaiJiXL() / TODO: Add your control notification handler code hereUpdateData(true);int sx,sy;sx=0; sy=0;double s1,s2,z;sx=(x_1*x_1)+(x_2*x_2)+(x_3*x_3);sy=(y_1*y_1)+(y_2*y_2)+(y_3*y_3);s1=sqrt(float)sx); s2=sqrt(float)sy); z=(float)acos(i_NJ/(s1*s2);f_WJ=(float)sin(z)*(s1*s2);UpdateData(false); 基于MFC的應用程序測試運行程序后,首先
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國玻璃鍍膜機行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 2025-2030年中國實驗室發(fā)酵罐行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 中國黃連行業(yè)市場調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報告
- 安全演練應急預案
- 中國特種車行業(yè)市場深度分析及投資潛力預測報告
- 2025年中國木薯行業(yè)發(fā)展趨勢預測及投資戰(zhàn)略咨詢報告
- 中國橡膠行業(yè)調(diào)查測報告
- 安全生產(chǎn)培訓的計劃
- 中國調(diào)度絞車行業(yè)運行態(tài)勢及未來發(fā)展趨勢預測報告
- 2025年中國地理大米市場運行態(tài)勢及行業(yè)發(fā)展前景預測報告
- 機器學習周志華課件
- Welcome Unit 開學第一課(課件)高中英語人教版必修第一冊
- 資產(chǎn)管理數(shù)字化解決方案
- -小學英語人稱代詞與物主代詞講解課件(共58張課件).課件
- 鋼筋內(nèi)部比對作業(yè)指導書
- 幼兒園中班社會《美麗的黃山》課件
- 長鑫存儲線上測試題
- 國家開放大學《園林樹木學》形考任務1-4參考答案
- 支氣管鏡檢查并發(fā)癥預防及處理
- 城鎮(zhèn)燃氣系統(tǒng)自動化技術(shù)規(guī)范
- SL-T+291-2020水利水電工程鉆探規(guī)程
評論
0/150
提交評論