全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1-4什么是抽象數(shù)據(jù)類型?試用C+的類聲明定義“復(fù)數(shù)”的抽象數(shù)據(jù)類型。要求(1) 在復(fù)數(shù)內(nèi)部用浮點數(shù)定義它的實部和虛部。(2) 實現(xiàn)3個構(gòu)造函數(shù):缺省的構(gòu)造函數(shù)沒有參數(shù);第二個構(gòu)造函數(shù)將雙精度浮點數(shù)賦給復(fù)數(shù)的實部,虛部置為0;第三個構(gòu)造函數(shù)將兩個雙精度浮點數(shù)分別賦給復(fù)數(shù)的實部和虛部。(3) 定義獲取和修改復(fù)數(shù)的實部和虛部,以及+、-、*、/等運算的成員函數(shù)。(4) 定義重載的流函數(shù)來輸出一個復(fù)數(shù)?!窘獯稹砍橄髷?shù)據(jù)類型通常是指由用戶定義,用以表示應(yīng)用問題的數(shù)據(jù)模型。抽象數(shù)據(jù)類型由基本的數(shù)據(jù)類型構(gòu)成,并包括一組相關(guān)的服務(wù)。/在頭文件complex.h中定義的復(fù)數(shù)類#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; /只置實部的構(gòu)造函數(shù) complex ( double r, double i ) Re = r; Im = i; /分別置實部、虛部的構(gòu)造函數(shù) double getReal ( ) return Re; /取復(fù)數(shù)實部 double getImag ( ) return Im; /取復(fù)數(shù)虛部 void setReal ( double r ) Re = r; /修改復(fù)數(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ù)四則運算 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ù)的實部與虛部;#endif /復(fù)數(shù)類complex的相關(guān)服務(wù)的實現(xiàn)放在C+源文件complex.cpp中#include #include #include “complex.h”complex& complex : operator + ( complex & ob ) /重載函數(shù):復(fù)數(shù)加法運算。complex * result = new complex ( Re + ob.Re, Im + ob.Im );return *result; complex& complex : operator ( complex& ob ) /重載函數(shù):復(fù)數(shù)減法運算 complex * result = new complex ( Re ob.Re, Im ob.Im );return * result;complex& complex : operator * ( complex& ob ) /重載函數(shù):復(fù)數(shù)乘法運算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ù)除法運算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輸出到輸出流對象os中。 return os ob.Re = 0.0 ) ? “+” : “-” fabs ( ob.Im ) arraySize或者對于某一個k (0 k n),使得k!*2k maxInt時,應(yīng)按出錯處理。可有如下三種不同的出錯處理方式:(1) 用cerr及exit (1)語句來終止執(zhí)行并報告錯誤;(2) 用返回整數(shù)函數(shù)值0, 1來實現(xiàn)算法,以區(qū)別是正常返回還是錯誤返回;(3) 在函數(shù)的參數(shù)表設(shè)置一個引用型的整型變量來區(qū)別是正常返回還是某種錯誤返回。試討論這三種方法各自的優(yōu)缺點,并以你認為是最好的方式實現(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ù)胤讲迦胗嬎鉩ount的語句: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)所得到的程序化簡。使得化簡后的程序與化簡前的程序具有相同的count值。(3) 程序執(zhí)行結(jié)束時的count值是多少?(4) 使用執(zhí)行頻度的方法計算這個程序的程序步數(shù),畫出程序步數(shù)統(tǒng)計表。 【解答】(1) 在適當(dāng)?shù)牡胤讲迦胗嬎鉩ount語句void d ( ArrayElement x , int n ) int i = 1; count +; do xi += 2; count +;i += 2; count +; count +;/針對while語句 while ( i = n ); i = 1; count +; while ( i = ( n / 2 ) ) count +;/針對while語句xi += xi+1;count +;i +;count +; count +;/針對最后一次while語句(2) 將由(1)所得到的程序化簡。化簡后的程序與原來的程序有相同的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ù)時,count = 3 * ( n / 2 ) + 3 * ( n / 2 ) + 3 = 3 * n + 3當(dāng)n為奇數(shù)時,count = 3 * ( ( n + 1 ) / 2 ) + 3 * ( ( n 1 ) / 2 ) + 3 = 3 * n + 3(4) 使用執(zhí)行頻度的方法計算程序的執(zhí)行步數(shù),畫出程序步數(shù)統(tǒng)計表:行 號 程 序 語 句一次執(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)五年級語文復(fù)習(xí)游戲活動
- 景區(qū)照明工程技術(shù)與安全措施
- 五年級上學(xué)期班主任學(xué)生評估計劃
- 三年級數(shù)學(xué)興趣班教學(xué)計劃
- 計算機應(yīng)用技術(shù)畢業(yè)生實習(xí)報告模版
- 2025年上海靜安區(qū)高三語文一模作文寫作技巧
- 青少年防震減災(zāi)教育活動計劃
- 外研版七年級上冊英語作文寫作素材收集
- 高中生入團申請書范文及寫作技巧
- 八年級語文教學(xué)反思與改進計劃
- 安徽省合肥市包河區(qū)2023-2024學(xué)年九年級上學(xué)期期末化學(xué)試題
- 《酸堿罐區(qū)設(shè)計規(guī)范》編制說明
- PMC主管年終總結(jié)報告
- 售樓部保安管理培訓(xùn)
- 倉儲培訓(xùn)課件模板
- 2025屆高考地理一輪復(fù)習(xí)第七講水循環(huán)與洋流自主練含解析
- GB/T 44914-2024和田玉分級
- 2024年度企業(yè)入駐跨境電商孵化基地合作協(xié)議3篇
- 《形勢與政策》課程標準
- 2023年海南省公務(wù)員錄用考試《行測》真題卷及答案解析
- 橋梁監(jiān)測監(jiān)控實施方案
評論
0/150
提交評論