2專業(yè)基礎(chǔ)實驗1指導(dǎo)書1(實驗一)_第1頁
2專業(yè)基礎(chǔ)實驗1指導(dǎo)書1(實驗一)_第2頁
2專業(yè)基礎(chǔ)實驗1指導(dǎo)書1(實驗一)_第3頁
2專業(yè)基礎(chǔ)實驗1指導(dǎo)書1(實驗一)_第4頁
2專業(yè)基礎(chǔ)實驗1指導(dǎo)書1(實驗一)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、For pers onal use only in study and research; not for commercial use專業(yè)基礎(chǔ)實驗1指導(dǎo)書軟件 101、102第1部分上機(jī)實驗上機(jī)實驗要求及規(guī)范一、實驗?zāi)康?、要求和任?wù)數(shù)據(jù)結(jié)構(gòu)課程具有比較強(qiáng)的理論性,同時也具有較強(qiáng)的可應(yīng)用性和實踐性。上機(jī)實驗是一個重要的教學(xué)環(huán)節(jié)。學(xué)生應(yīng)該重視實驗環(huán)節(jié),對于編寫程序上機(jī)練習(xí)具有一定的積極性。更應(yīng)該重視 實驗的總結(jié)、實驗報告的撰寫。對于一名大學(xué)生必須嚴(yán)格訓(xùn)練分析總結(jié)能力、書面表達(dá)能力。需要逐步培養(yǎng)書寫科學(xué)實驗報告以及科技論文的能力。拿到一個題目,一般不要急于編程。按照面向過程的程序設(shè)計思路(關(guān)于面向

2、對象的訓(xùn)練將在其它后繼課程中進(jìn) 行),正確的方法是:首先理解問題,明確給定的條件和要求解決的問題,然后按照自頂向 下,逐步求精,分而治之的策略,逐一地解決子問題。具體實習(xí)步驟如下:1問題分析與系統(tǒng)結(jié)構(gòu)設(shè)計上機(jī)實驗是針對一個具體的實際問題,進(jìn)行程序設(shè)計以便解決問題。首先需要充分地分析和理解問題本身,弄清要求 做什么(而不是怎么做), 限制條件是什么。按照面向?qū)ο蠹?術(shù)的原則,考慮所需設(shè)計的 類是什么?在主函數(shù)中如何使用類對象,如何實現(xiàn)問題的解決。 具體來講,搞清實際問題的若干數(shù)據(jù)元素的邏輯結(jié)構(gòu)(是線性表還是樹、圖?),確定數(shù)據(jù) 的存儲結(jié)構(gòu)(是順序結(jié)構(gòu)還是鏈表結(jié)構(gòu)?),設(shè)計哪些有關(guān)操作的函數(shù)。將數(shù)

3、據(jù)存儲結(jié)構(gòu)和算法對應(yīng)的函數(shù)封裝成為一個類,一些重要的典型的算法往往以類的成員函數(shù)形式出現(xiàn)。要求繪制簡明扼要的系統(tǒng)結(jié)構(gòu)圖,主要描述主函數(shù)系統(tǒng)結(jié)構(gòu)。對于復(fù)雜重要的算法, 也要繪制該函數(shù)的流程圖。充分地分析和理解問題本身,弄清要求做什么,包括功能要求、性能要求、設(shè)計要求和約束以及基本數(shù)據(jù)特性,數(shù)據(jù)間的聯(lián)系等。2. 詳細(xì)設(shè)計和編碼詳細(xì)設(shè)計是對函數(shù)(模塊)的進(jìn)一步求精,用偽高級語言或自然語言寫出算法框架,這 時不必確定很多結(jié)構(gòu)和變量。編碼,即程序設(shè)計。就是對詳細(xì)設(shè)計結(jié)果的進(jìn)一步求精,即用某種高級語言(如C+H語言)表達(dá)出來。盡量多設(shè)一些注釋語句,清晰易懂。盡量臨時增加 一些輸出語句,便于差錯矯正,在程序

4、成功后再刪去它們。3. 上機(jī)準(zhǔn)備熟悉高級語言用法,如 C+語言。熟悉機(jī)器(即操作系統(tǒng)),基本的常用命令。靜態(tài)檢 查主要有兩條路徑, 一是用一組測試數(shù)據(jù)手工執(zhí)行程序(或分模塊進(jìn)行);二是通過閱讀或 給別人講解自己的程序而深入全面地理解程序邏輯,在這個過程中再加入一些注釋和斷言。 如果程序中邏輯概念清楚,后者將比前者有效。4. 上機(jī)調(diào)試程序上機(jī)調(diào)試程序應(yīng)該分步驟分層次進(jìn)行。程序由簡到繁、規(guī)模由小到大、數(shù)據(jù)量由少到多, 逐步完成。比如,針對一個類它可能有許多函數(shù),建議首先僅僅調(diào)試類的構(gòu)造函數(shù)和輸入/出函數(shù),這一步比較簡單容易。即使如此,實驗數(shù)據(jù)的規(guī)模也從少量幾個開始(1-3個),程序調(diào)通之后,再用大

5、量數(shù)據(jù)(十個到幾十個或者更多)實驗。此時,還可以排除一些錯誤。通過這 一階段,可以排除數(shù)據(jù)結(jié)構(gòu)設(shè)計、構(gòu)造函數(shù)和輸入/輸出函數(shù)設(shè)計的錯誤。然后,再把體現(xiàn)重要算法的函數(shù)加入到源程序之中,這包括:類代碼中的函數(shù)原型聲明、函數(shù)實現(xiàn)的程序代碼以及對它的調(diào)用語句等等。此時,實驗數(shù)據(jù)規(guī)模也從少量幾個開始,以便檢查算法設(shè)計的正確性,程序基本調(diào)通之后,再用大量數(shù)據(jù)進(jìn)行實驗。本階段還可進(jìn)一步 排除一些錯誤。但是,出現(xiàn)錯誤的范圍往往集在新加入的代碼段之中。5. 測試用例設(shè)計準(zhǔn)備典型測試數(shù)據(jù)和測試方案,測試數(shù)據(jù)要有代表性、 敏感性,測試方案包括模塊測試和模塊集成測試。6. 整理實習(xí)報告在上機(jī)實開始之前要充分準(zhǔn)備實驗數(shù)

6、據(jù),在上機(jī)實踐過程中要及時記錄實驗數(shù)據(jù),在 上機(jī)實踐完成之后必須及時總結(jié)分析。寫出實驗報告,實驗報告的書寫格式。實驗報告書寫:(1 )實驗?zāi)康募耙蟀慈蝿?wù)書給出實驗?zāi)康募耙螅瑢嶒災(zāi)康囊羁腆w會。(2 )實驗內(nèi)容按任務(wù)書給出的實驗內(nèi)容抄寫(3 )解決問題的思路1)對實驗問題的描述:2)算法的數(shù)據(jù)結(jié)構(gòu);3)算法基本操作的說明及分析(可能需要流程圖)(4)工作表清單給出算法描述的程序代碼(加附頁)(5)總結(jié)1) 給出測試數(shù)據(jù)及實驗結(jié)果分析與評價;2)實驗方法的拓展;3)算法的時間復(fù)雜度為;4)實驗心得體會附源程序清單和運(yùn)行結(jié)果。源程序要加注釋。如果題目規(guī)定了測試數(shù)據(jù),則結(jié)果要包含這些測試數(shù)據(jù)和運(yùn)行

7、輸出, 當(dāng)然還可以含有其它測試數(shù)據(jù)和運(yùn)行輸出(有時需要多組數(shù)據(jù))。二、如何提高上機(jī)效率為了提高上機(jī)的效率, 真正達(dá)到實驗?zāi)康模?要求同學(xué)做好實驗前的準(zhǔn)備工作,寫好實驗預(yù)習(xí)報告,編寫好程序,并用一組測試數(shù)據(jù)手工執(zhí)行程序靜態(tài)檢查程序是否有錯,通過閱讀、執(zhí)行程序或給別人講解自己的程序而深入全面地理解程序邏輯,提高程序的正確性。對c,c+語言程序不熟悉的同學(xué),上機(jī)時最好帶上c,c+語言程序設(shè)計的教材,以備查詢。調(diào)試中遇到問題,應(yīng)認(rèn)真分析,確定可疑點,設(shè)置調(diào)試斷點或輸出斷點處變量的值,以便發(fā)現(xiàn)問題,迅速排除問題,加快調(diào)試速度。第2部分C+基本知識各種數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)算法的描述總是要選用一種語言工具。在計

8、算機(jī)科學(xué)發(fā)展過程中,早期數(shù)據(jù)結(jié)構(gòu)教材大都采用PASCALS言為描述工具,后來出現(xiàn)了采用C語言為描述工具的教材版本、至今又出現(xiàn)了采用C+語言為描述工具的多種教材版本。本實驗指導(dǎo)書是為已經(jīng)學(xué)習(xí)過C+語言的學(xué)生而編寫。程序要求在Devc+開發(fā)環(huán)境之下調(diào)試運(yùn)行,采用面向?qū)?象方法進(jìn)行設(shè)計。 典型的數(shù)據(jù)結(jié)構(gòu)被設(shè)計成為類(class),典型算法設(shè)計成為類的函數(shù)成員,然后在主函數(shù)中聲明創(chuàng)建類對象,根據(jù)實際需要調(diào)用重要的算法。由于C+的使用具有一定的難度,為了同學(xué)更好的學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)自身的知識內(nèi)容,減輕描述工具所帶來的困難,這里針對數(shù)據(jù)結(jié)構(gòu)上機(jī)實驗所必須的C+基本知識(結(jié)構(gòu)體、類等等)做補(bǔ)充介紹。#in elu

9、de編譯預(yù)處理編譯預(yù)處理等類的相關(guān)程序編碼主函數(shù)程序代碼一、源程序組成class A;/類成員函數(shù)定義;int mai n()這部分內(nèi)容詳細(xì)參見本指導(dǎo)書的第3部分的程序?qū)嵗6?、結(jié)構(gòu)體及運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程所研究的問題均運(yùn)用到“結(jié)構(gòu)體”和“類” 。在C+語言中結(jié)構(gòu)體和函數(shù)又是理解和掌握“類”的語法基礎(chǔ)。定義結(jié)構(gòu)體的一般格式:struct 結(jié)構(gòu)體類型名類型名1變量名1;數(shù)據(jù)子域類型名2變量名2;類型名n變量名n;其中struct是保留字。結(jié)構(gòu)體類型名由用戶自己命名。在使用時必須聲明一個具體的結(jié)構(gòu)體類型的變量,聲明創(chuàng)建一個結(jié)構(gòu)體變量的方法是:int結(jié)構(gòu)體類型名結(jié)構(gòu)體變量名;一個結(jié)構(gòu)體中可以包含多個數(shù)據(jù)

10、子域。數(shù)據(jù)子域的類型名一般指基本數(shù)據(jù)類型(char等),也可是已經(jīng)定義的另一結(jié)構(gòu)體名。數(shù)據(jù)子域變量名可以是簡單變量,也可以是數(shù) 組。它們也可以稱為結(jié)構(gòu)體的數(shù)據(jù)成員,它們的訪問控制具有公有屬性。i. 通過“結(jié)構(gòu)體變量名.數(shù)據(jù)子域”可以訪問數(shù)據(jù)子域。/設(shè)計Student結(jié)構(gòu)體,在主程序中運(yùn)用。#in elude#in elude#in elude/定義結(jié)構(gòu)體Stude nt longnum;/學(xué)號intx;/成績charn amei0;/姓名int main() Stude ntsi;/為si的數(shù)據(jù)子域提供數(shù)據(jù)struct Stude nt聲明創(chuàng)建一個結(jié)構(gòu)體變量si或者使用鍵盤輸入si. num=

11、1001 ;si. x=83;cin si. num; cin si. x;strcpy( si. name.李明”);cin si. name;/輸出結(jié)構(gòu)體變量si的內(nèi)容cout “ 姓名:” endl;cout“學(xué)號:” si.numendl:cout“成績:” si.x ednl;_getch(); return 0;2.設(shè)計一維數(shù)組,每個數(shù)組元素是Stude nt結(jié)構(gòu)體類型,通過以下語句段可以說明結(jié)構(gòu) 體數(shù)組的一般用法:通過“ 結(jié)構(gòu)體數(shù)組名下標(biāo).數(shù)據(jù)子域”訪問數(shù)據(jù)域。Stude nt a5;聲明創(chuàng)建一個結(jié)構(gòu)體數(shù)組afor(i nti=0, i5, i+) coutai.

12、num;/輸出數(shù)組元素 ai的學(xué)號域cout ;/輸出數(shù)組元素 ai的姓名域coutai.x;/輸出數(shù)組元素ai的成績域以上是關(guān)于結(jié)構(gòu)體的基本概念和簡單運(yùn)用。三、類的基本概念及運(yùn)用類的是面向?qū)ο蟪绦虻幕締挝?。類是由?shù)據(jù)成員和相關(guān)的函數(shù)成員組成。從面向?qū)ο蟮慕嵌瓤紤]“學(xué)生”這個類,它不僅包括“學(xué)生”的一般屬性:學(xué)號、姓名、成績等等,還應(yīng)包括對于這些屬性的操作:輸入/輸出、聽課、實驗、等等。類定義的一般格式:class 類名若干數(shù)據(jù)成員; 若干函數(shù)成員;;類的數(shù)據(jù)成員和函數(shù)成員均存在訪問控制權(quán)限問題。訪問控制分為三種:公有(public )、私有(private)和受護(hù)(prot

13、ected)。數(shù)據(jù)成員的定義和結(jié)構(gòu)體中的數(shù)據(jù)域定義是相似的。不同的是它們必須明確訪問控制。而公有數(shù)據(jù)成員,可以認(rèn)為與結(jié)構(gòu)體的數(shù)據(jù)域的訪問權(quán)限相同。成員函數(shù)的定義又和一般函數(shù)的定義基本相同。不同的是類中成員函數(shù)也必須明確訪問控制權(quán)限。如果在類之中定義成員函數(shù)帶函數(shù)體,并未有什么特殊之處。如果在類之中僅有成員函數(shù)的原型聲明,當(dāng)在類定義之外定義函數(shù)體時,需要加上類限定標(biāo)識“類名:”。下面是“學(xué)生”類的定義:class Stude nts private:long num;int x;char n ame10; public:Stude nts();Stude nts() ;/定義類結(jié)構(gòu)體Stude

14、nts私有成員/學(xué)號/ 成績/姓名/公有成員void SetDat( long n, i nt xO, char *naO ) num=n; x=x0; strcpy( n ame ,n a0);void Prin tOut();輸出函數(shù)的原型聲明;void Stude nts:Pri ntOut()輸出函數(shù)前加 Stude nts: cout “ 姓名: ” iame endl;cout “學(xué)號: ” numendl:cout “成績:” ednl;在主程序中運(yùn)用類Stude main()/聲明創(chuàng)建一個類對象s,調(diào)用構(gòu)造函數(shù)輸出s的內(nèi)容Stude ntss;s.Prin tO

15、ut();long m; int y; char xn ame10;cout yx name;s. SetDat( m, y, xname );修改對象 s 數(shù)據(jù)s. PrintOut();輸出改變后s的內(nèi)容運(yùn)行結(jié)果:_getch(); return 0;姓名:o學(xué)號:0成績:0輸入學(xué)號,成績,姓名:1001 90 Wan gMi ng姓名:Wan gMi ng學(xué)號:1001成績:90這個例題中數(shù)據(jù)成員全部定義為私有(private),以便保證數(shù)據(jù)安全性。而函數(shù)成員全部定義為公有(public )成員函數(shù),可以作為類對外部的的接口。通過s. SetDat( m, y, xname );直接訪公

16、有函數(shù)成員SetDat(),將實參(主函數(shù)的局部變量 m, y,xn ame)的數(shù)據(jù)賦給私有數(shù)據(jù)成員num, x, name。通過s.PrintOut();直接訪公有函數(shù)成員PrintOut(),間接訪問輸出私有成員num,x,name。四、結(jié)構(gòu)體在類中的使用1結(jié)構(gòu)體數(shù)組做類的數(shù)據(jù)成員con st i nt MAXSIZE=100;/ 數(shù)組的容量struct ElemType/數(shù)據(jù)元素的類型 int nu mb;char n ame20;long tel;class Sqlist private:ElemType elemMAXSIZE;/結(jié)構(gòu)體ElemType類型的數(shù)組 elem做數(shù)據(jù)成員i

17、nt len gth;public:Sqlist( void);Sqlist() ;/其他函數(shù);2. 結(jié)構(gòu)體指針變量做類的數(shù)據(jù)成員struct NodeType int data;/結(jié)點的結(jié)構(gòu)定義/數(shù)據(jù)域NodeType *n ext;/指針域;class Link/類聲明 private:NodeType *Head;指向結(jié)構(gòu)構(gòu)體NodeType的指針變量Head做數(shù)據(jù)成員public:Li nk ( )Head=new NodeType;Head-n ext=Head; Lin k () ;void creat();/為頭結(jié)點申請空間/頭結(jié)點Head形成空環(huán)Headvoid outs();

18、實驗一:關(guān)于抽象數(shù)據(jù)類型ADT勺實驗一、實驗?zāi)康募耙?熟悉C+環(huán)境(DEVC+),理解抽象數(shù)據(jù)類型 ADT的基本概念;2. 學(xué)會運(yùn)用C設(shè)計實現(xiàn)復(fù)數(shù)的ADT、集合的ADT ;3. 練習(xí)運(yùn)算符重載的使用。二、實驗內(nèi)容01. 定義復(fù)數(shù)的數(shù)據(jù)結(jié)構(gòu),在復(fù)數(shù)加法的基礎(chǔ)上增加減法、乘法、除法操作。2. 定義集合的數(shù)據(jù)結(jié)構(gòu),實現(xiàn)集合的并、交、差運(yùn)算基本操作。要求:演示程序有很好的界面及交互性。如:實驗1的參考界面:卜-二歡迎使用真藪電算岳建花貫數(shù)的輸入2”復(fù)數(shù)C2的輸入包-復(fù)藪的輸由4-c-cl*c25 . c =c 1 c2 c =ci*c27 . c =clZc28 -退出 輸入直已Tii.中的日示dJ

19、tju丄玄-4 輸入:LF= 2R+hl中的豆幣= ? 輸入丄312-41k;S+7i 輸入:4*?+3i三、實驗準(zhǔn)備 1.計算機(jī)設(shè)備;2.程序調(diào)試環(huán)境的準(zhǔn)備,如 Devc+環(huán)境;3實驗內(nèi)容的算法分析與代碼設(shè)計與分析準(zhǔn)備 四、實驗背景知識1數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(1) .數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)指的是有某種關(guān)系(某一種關(guān)系)的數(shù)據(jù)元素的集合。包括以下三個方面的內(nèi)容: 數(shù)據(jù)的邏輯結(jié)構(gòu)一一數(shù)據(jù)元素之間的邏輯關(guān)系(D,S)。數(shù)據(jù)的存儲結(jié)構(gòu)一一數(shù)據(jù)元素及其關(guān)系在計算機(jī)存儲器內(nèi)的表示。運(yùn)算(操作特征)一一對數(shù)據(jù)進(jìn)行操作的特點和規(guī)范。(P)(2).數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)是從邏輯關(guān)系上描述數(shù)據(jù),它與數(shù)據(jù)的存儲無關(guān)

20、,是獨(dú)立于計算機(jī)的。有四大類:集合、線性結(jié)構(gòu)、樹型結(jié)構(gòu)、圖型結(jié)構(gòu)。線性結(jié)構(gòu)的邏輯特征是:若結(jié)構(gòu)是非空集,則符合以下四個特征:有且僅有一個表頭結(jié)點;有且僅有一個表尾結(jié)點;除了表頭結(jié)點,其余結(jié)點均有且僅有一個直接前驅(qū);除了表尾結(jié)點,其余結(jié)點均有且僅有一個直接后繼。(3).數(shù)據(jù)的存儲結(jié)構(gòu)數(shù)據(jù)的存儲結(jié)構(gòu)是邏輯結(jié)構(gòu)用計算機(jī)語言的實現(xiàn),即建立計算機(jī)的機(jī)內(nèi)表示,在存儲空間中建立各結(jié)點之間的關(guān)聯(lián)來表示數(shù)據(jù)元素之間的邏輯關(guān)系。數(shù)據(jù)的存儲結(jié)構(gòu)主要有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)兩大類。順序存儲結(jié)構(gòu)中的元素都依次存儲在一個連續(xù)的區(qū)域中,元素的物理地址就體現(xiàn)了元素的邏輯關(guān)系。鏈?zhǔn)酱鎯Y(jié)構(gòu)中的結(jié)點不僅包含一個數(shù)據(jù)元素,還包

21、含一個指針,指向該元素邏輯上的直接后繼結(jié)點。(4).數(shù)據(jù)結(jié)構(gòu)的運(yùn)算1)創(chuàng)建運(yùn)算(create):創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu);2)清除運(yùn)算(clear):刪除數(shù)據(jù)結(jié)構(gòu)中的全部元素;3)插入運(yùn)算(insert):在數(shù)據(jù)結(jié)構(gòu)的指定位置上插入一個新元素;4)刪除運(yùn)算(remove):將數(shù)據(jù)結(jié)構(gòu)中的某個元素刪除;5)搜索運(yùn)算(search):在數(shù)據(jù)結(jié)構(gòu)中搜索滿足一定條件的元素;6)更新運(yùn)算(replace):修改數(shù)據(jù)結(jié)構(gòu)中某個元素的值;7)訪問運(yùn)算(retrieve):訪問數(shù)據(jù)結(jié)構(gòu)中某個元素;8)遍歷運(yùn)算(traverse):按照某種次序,系統(tǒng)地訪問數(shù)據(jù)結(jié)構(gòu)的各元素,使得每個元素 恰好被訪問一次。(5).數(shù)據(jù)結(jié)構(gòu)

22、的規(guī)范和實現(xiàn)數(shù)據(jù)結(jié)構(gòu)的規(guī)范(ADT ):是指它的邏輯結(jié)構(gòu)和運(yùn)算的規(guī)范;數(shù)據(jù)結(jié)構(gòu)的實現(xiàn):是指它的存儲表示和運(yùn)算的實現(xiàn)。2復(fù)數(shù)復(fù)數(shù)的代數(shù)形式:形如 a + bi (a, b R)的數(shù)叫復(fù)數(shù),實數(shù) a、b分別叫做實部和虛部。 試設(shè)計一個復(fù)數(shù)類,該類有實部和虛部兩個成員數(shù)據(jù),成員數(shù)據(jù)采用私有訪問權(quán)限,同時該類有兩個共有成員函數(shù)。設(shè)z仁a+bi,z2=c+di是任意兩個復(fù)數(shù),復(fù)數(shù)的四則運(yùn)算規(guī)定為:z1+z2 =( a+ c) + ( b + d) i,z1-z2=( a c) + ( b d) i,z1*z2 =( ac bd) + ( bc+ ad) i,2 2 2 2z1/z2= (ac+bd) /

23、 (c +d ) + (bc ad) / (c +d ) i.3. 集合是一些可確定的可相互區(qū)別的事物(同種類型的數(shù)據(jù)元素)匯集在一起所組成的整體。集合的元素具有以下三個性質(zhì):(1)確定性.元素與集合的關(guān)系是屬于或不屬于,二者必居其一.(2) 互異性集合中元素彼此不同,沒有重復(fù)的元素。(3) 無序性集合中的元素與排列順序無關(guān)。并、交、差是集合常用的運(yùn)算。五、設(shè)計與實現(xiàn)1 復(fù)數(shù)的有關(guān)操作(1)復(fù)數(shù)的ADTADT complex數(shù)據(jù)對象:D= e1,e2 | e1,e2 RealSet 數(shù)據(jù)關(guān)系:R1 = | el是復(fù)數(shù)的實數(shù)部分,e2是復(fù)數(shù)的虛數(shù)部分運(yùn)算:Ini tComplex (v1, v2

24、 )操作結(jié)果:構(gòu)造一復(fù)數(shù),其實部和虛部分別被賦以參數(shù)v1和v2的值。DestroyComplex()操作結(jié)果:復(fù)數(shù)被銷毀。GetReal(&realPart )初始條件:復(fù)數(shù)已存在。操作結(jié)果:用realPart返回復(fù)數(shù)的實部值。Getlmag(&lmagPart )初始條件:復(fù)數(shù)已存在。操作結(jié)果:用ImagPart返回復(fù)數(shù)的虛部值。Add(z1,z2)初始條件:z1, z2是復(fù)數(shù)。操作結(jié)果:返回兩個復(fù)數(shù)z1、z2的和值。 ADT Complex(2)復(fù)數(shù)類模板的定義 (XXXX.h,女口 complex.h)template class Complexprivate:T real,imag;p

25、ublic:Complex();Complex(T r,T i);T Getreal()c on st;T Getimag()c on st;Complex Add(Complex &c);/其他運(yùn)算Complex operator+(Complex &c);/其他運(yùn)算重載void Output(ostrea m& out); void In put(istrea m& in);;(3 )復(fù)數(shù)類模板中成員函數(shù)的實現(xiàn)(complex.cpp)(4 )主程序模塊定義在沒有學(xué)習(xí)可視化圖形界面之前,建議在主函數(shù)中簡單設(shè)計一個菜單”(do-while循環(huán)內(nèi)嵌套一個switch結(jié)構(gòu))。隨著學(xué)習(xí)的深入,應(yīng)該

26、學(xué)會熟練使用菜單”技術(shù),這樣會明顯提高編程和運(yùn)行效率。一個主函數(shù)一般樣式如下:(參考代碼) do顯示菜單內(nèi)容cout=歡迎使用復(fù)數(shù)運(yùn)算系統(tǒng) =n;cout1.復(fù)數(shù)C1的輸入 2. 復(fù)數(shù)C2的輸入n; cout3.復(fù)數(shù)的輸出4.c=c1+c2n;cout5.c=c1-c26.c=c1*c2n;cout7.c=c1/c28.退出 n;cout=n;cout c1; break;case 2:c inc2; break;case 3:coutc1c2; break;case 4:c3=c1+c2; break;case 5:c3=c1-c2; break;case 6:c3=c1*c2;break;case 7:c3=c1/c2;break;case 8:retur n; break;while(1)主程序結(jié)構(gòu)(實現(xiàn)見文件:complexmain.cpp):菜單顯示;選擇操作;(5)測試數(shù)據(jù)及測試結(jié)果(只列舉了加法運(yùn)算)1) 0,;0;應(yīng)輸出o2) 3.1,0;4.22,8.9;應(yīng)輸出 7.32+8.9 i3) -1.33,2.34;0.1,-6.5;應(yīng)輸出-1.23 4.16 i4) 0,9.7;-2.1,-9.7;應(yīng)輸出-2.15) 7.7,-8;-7.7,0;應(yīng)輸出-8i2 集合的有關(guān)操作(1)集合的ADTADT set/完成此部分內(nèi)容 ADT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論