全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1-4什么是抽象數(shù)據(jù)類(lèi)型?試用C+的類(lèi)聲明定義“復(fù)數(shù)”的抽象數(shù)據(jù)類(lèi)型。要求(1) 在復(fù)數(shù)內(nèi)部用浮點(diǎn)數(shù)定義它的實(shí)部和虛部。(2) 實(shí)現(xiàn)3個(gè)構(gòu)造函數(shù):缺省的構(gòu)造函數(shù)沒(méi)有參數(shù);第二個(gè)構(gòu)造函數(shù)將雙精度浮點(diǎn)數(shù)賦給復(fù)數(shù)的實(shí)部,虛部置為0;第三個(gè)構(gòu)造函數(shù)將兩個(gè)雙精度浮點(diǎn)數(shù)分別賦給復(fù)數(shù)的實(shí)部和虛部。(3) 定義獲取和修改復(fù)數(shù)的實(shí)部和虛部,以及+、-、*、/等運(yùn)算的成員函數(shù)。(4) 定義重載的流函數(shù)來(lái)輸出一個(gè)復(fù)數(shù)?!窘獯稹砍橄髷?shù)據(jù)類(lèi)型通常是指由用戶(hù)定義,用以表示應(yīng)用問(wèn)題的數(shù)據(jù)模型。抽象數(shù)據(jù)類(lèi)型由基本的數(shù)據(jù)類(lèi)型構(gòu)成,并包括一組相關(guān)的服務(wù)。/在頭文件complex.h中定義的復(fù)數(shù)類(lèi)#ifndef _complex_h_#define _complex_h_#include class comlex public: complex ( ) Re = Im = 0; /不帶參數(shù)的構(gòu)造函數(shù) complex ( double r ) Re = r; Im = 0; /只置實(shí)部的構(gòu)造函數(shù) complex ( double r, double i ) Re = r; Im = i; /分別置實(shí)部、虛部的構(gòu)造函數(shù) double getReal ( ) return Re; /取復(fù)數(shù)實(shí)部 double getImag ( ) return Im; /取復(fù)數(shù)虛部 void setReal ( double r ) Re = r; /修改復(fù)數(shù)實(shí)部 void setImag ( double i ) Im = i; /修改復(fù)數(shù)虛部 complex& operator = ( complex& ob) Re = ob.Re; Im = ob.Im; /復(fù)數(shù)賦值 complex& operator + ( complex& ob );/重載函數(shù):復(fù)數(shù)四則運(yùn)算 complex& operator ( complex& ob ); complex& operator * ( complex& ob ); complex& operator / ( complex& ob ); friend ostream& operator ( ostream& os, complex& c );/友元函數(shù):重載private: double Re, Im;/復(fù)數(shù)的實(shí)部與虛部;#endif /復(fù)數(shù)類(lèi)complex的相關(guān)服務(wù)的實(shí)現(xiàn)放在C+源文件complex.cpp中#include #include #include “complex.h”complex& complex : operator + ( complex & ob ) /重載函數(shù):復(fù)數(shù)加法運(yùn)算。complex * result = new complex ( Re + ob.Re, Im + ob.Im );return *result; complex& complex : operator ( complex& ob ) /重載函數(shù):復(fù)數(shù)減法運(yùn)算 complex * result = new complex ( Re ob.Re, Im ob.Im );return * result;complex& complex : operator * ( complex& ob ) /重載函數(shù):復(fù)數(shù)乘法運(yùn)算complex * result = new complex ( Re * ob.Re Im * ob.Im, Im * ob.Re + Re * ob.Im );return *result;complex& complex : operator / ( complex& ) /重載函數(shù):復(fù)數(shù)除法運(yùn)算double d = ob.Re * ob.Re + ob.Im * ob.Im;complex * result = new complex ( ( Re * ob.Re + Im * ob.Im ) / d,( Im * ob. Re Re * ob.Im ) / d );return * result;friend ostream& operator ( ostream& os, complex & ob ) /友元函數(shù):重載,將復(fù)數(shù)ob輸出到輸出流對(duì)象os中。 return os ob.Re = 0.0 ) ? “+” : “-” fabs ( ob.Im ) arraySize或者對(duì)于某一個(gè)k (0 k n),使得k!*2k maxInt時(shí),應(yīng)按出錯(cuò)處理。可有如下三種不同的出錯(cuò)處理方式:(1) 用cerr及exit (1)語(yǔ)句來(lái)終止執(zhí)行并報(bào)告錯(cuò)誤;(2) 用返回整數(shù)函數(shù)值0, 1來(lái)實(shí)現(xiàn)算法,以區(qū)別是正常返回還是錯(cuò)誤返回;(3) 在函數(shù)的參數(shù)表設(shè)置一個(gè)引用型的整型變量來(lái)區(qū)別是正常返回還是某種錯(cuò)誤返回。試討論這三種方法各自的優(yōu)缺點(diǎn),并以你認(rèn)為是最好的方式實(shí)現(xiàn)它。【解答】#include iostream.h#define arraySize 100#define MaxInt 0x7fffffffint calc ( int T , int n ) int i, value = 1;if ( n != 0 ) int edge = MaxInt / n / 2;for ( i = 1; i edge ) return 0;value *= n * 2;Tn = value;cout A n = Tn endl;return 1;void main ( ) int AarraySize;int i;for ( i = 0; i arraySize; i+ )if ( !calc ( A, i ) ) cout failed at i . endl;break;1-9 (1) 在下面所給函數(shù)的適當(dāng)?shù)胤讲迦胗?jì)算count的語(yǔ)句:void d (ArrayElement x , int n ) int i = 1; do xi += 2; i +=2; while (i = n ); i = 1; while ( i = (n/2) ) xi += xi+1; i+; (2) 將由(1)所得到的程序化簡(jiǎn)。使得化簡(jiǎn)后的程序與化簡(jiǎn)前的程序具有相同的count值。(3) 程序執(zhí)行結(jié)束時(shí)的count值是多少?(4) 使用執(zhí)行頻度的方法計(jì)算這個(gè)程序的程序步數(shù),畫(huà)出程序步數(shù)統(tǒng)計(jì)表。 【解答】(1) 在適當(dāng)?shù)牡胤讲迦胗?jì)算count語(yǔ)句void d ( ArrayElement x , int n ) int i = 1; count +; do xi += 2; count +;i += 2; count +; count +;/針對(duì)while語(yǔ)句 while ( i = n ); i = 1; count +; while ( i = ( n / 2 ) ) count +;/針對(duì)while語(yǔ)句xi += xi+1;count +;i +;count +; count +;/針對(duì)最后一次while語(yǔ)句(2) 將由(1)所得到的程序化簡(jiǎn)?;?jiǎn)后的程序與原來(lái)的程序有相同的count值:void d ( ArrayElement x , int n ) int i = 1;do count += 3; i += 2; while ( i = n ); i = 1;while ( i = ( n / 2 ) ) count += 3; i +; count += 3;(3) 程序執(zhí)行結(jié)束后的count值為 3n + 3。當(dāng)n為偶數(shù)時(shí),count = 3 * ( n / 2 ) + 3 * ( n / 2 ) + 3 = 3 * n + 3當(dāng)n為奇數(shù)時(shí),count = 3 * ( ( n + 1 ) / 2 ) + 3 * ( ( n 1 ) / 2 ) + 3 = 3 * n + 3(4) 使用執(zhí)行頻度的方法計(jì)算程序的執(zhí)行步數(shù),畫(huà)出程序步數(shù)統(tǒng)計(jì)表:行 號(hào) 程 序 語(yǔ) 句一次執(zhí)行步數(shù)執(zhí)行頻度程序步數(shù) 1 2 3 4 5 6 7 8 9 10 11 12void d ( ArrayElement x , int n ) int i = 1; do xi += 2;i += 2; while ( i = n ); i = 1; wh
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 珠海房屋租賃合同
- 燃料油年度購(gòu)銷(xiāo)合同范本
- 2025年仁愛(ài)科普版七年級(jí)科學(xué)下冊(cè)階段測(cè)試試卷含答案
- 2025年滬教新版第一冊(cè)生物下冊(cè)階段測(cè)試試卷含答案
- 2025年滬教新版九年級(jí)化學(xué)上冊(cè)階段測(cè)試試卷含答案
- 2025年冀教新版九年級(jí)物理下冊(cè)階段測(cè)試試卷含答案
- 2025年北師大新版高一數(shù)學(xué)下冊(cè)月考試卷含答案
- 家政洗滌居間服務(wù)協(xié)議
- 2025年北師大版九年級(jí)科學(xué)下冊(cè)階段測(cè)試試卷含答案
- 2025年外研版必修1物理下冊(cè)階段測(cè)試試卷含答案
- 《酸堿罐區(qū)設(shè)計(jì)規(guī)范》編制說(shuō)明
- PMC主管年終總結(jié)報(bào)告
- 售樓部保安管理培訓(xùn)
- 倉(cāng)儲(chǔ)培訓(xùn)課件模板
- 2025屆高考地理一輪復(fù)習(xí)第七講水循環(huán)與洋流自主練含解析
- GB/T 44914-2024和田玉分級(jí)
- 2024年度企業(yè)入駐跨境電商孵化基地合作協(xié)議3篇
- 《形勢(shì)與政策》課程標(biāo)準(zhǔn)
- 2023年海南省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 橋梁監(jiān)測(cè)監(jiān)控實(shí)施方案
- 消防控制室值班人員崗位職責(zé)-五項(xiàng)制度
評(píng)論
0/150
提交評(píng)論