


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、設(shè)計題目:編寫程序提示用戶輸入一個班級中的學(xué)生人數(shù) n, 再依次提示用戶輸入 n個人在課程 A中的考試成 績,然后計算出平均值,顯示出來。 要求用到第 九章中的數(shù)組類模板 Array 定義浮點型數(shù)組存儲 考試成績。姓名:馬雪峰學(xué)號:20141030106專業(yè)班級:計科一班完成日期:2016年6月26日1設(shè)計任務(wù)編寫程序提示用戶輸入一個班級中的學(xué)生人數(shù)n,再依次提示用戶輸入n個人在課程A中的考試成績,然后計算出平均值,顯示出來。要求用到第九章中的數(shù)組類模板Array定義浮點型數(shù)組存儲考試成績。1.1設(shè)計目的(1)、加強C+課程學(xué)習(xí),將課本上的理論知識運用于實踐,通過實際的程序操作來提高 自己編寫
2、程序的能力,達到理論與實踐相結(jié)合的目的。(2) 、培養(yǎng)自己動腦思考,動手操作的能力,在實際操作過程中體會C+中面向?qū)ο蟮乃?想。(3)、在實際的操作過程中去衡量自己理論知識掌握的程度,通過設(shè)計流程,編寫程序, 上機調(diào)試去尋找并發(fā)現(xiàn)知識的缺陷,并想辦法彌補。(4)、在本程序中主要是要達到能對類的定義及用法,數(shù)組的定義及用法,數(shù)組類模版, 運算符重載,多文件結(jié)構(gòu),成員函數(shù)的實現(xiàn)等的熟練運用。1.2設(shè)計內(nèi)容用數(shù)組類模板、析構(gòu)函數(shù)、構(gòu)造函數(shù)、賦值構(gòu)造函數(shù)、運算符重載、指針等語法來完成一個班級在某門課程中考試的平均值的程序。1.3設(shè)計指標(biāo)或者要求設(shè)計指標(biāo):用C+完成一個班級在某門課程中的成績儲存并計算平
3、均值的程序,要求用 到數(shù)組類模板。輸入要求:在程序運行的頁面根據(jù)提示輸入班級學(xué)生人數(shù)n,再依次輸入每個人在課程A中的成績。輸出要求:輸出n個人在課程A中的平均成績。2設(shè)計過程(1) 、分析程序的功能:使用戶能根據(jù)程序提示輸入班級學(xué)生人數(shù)n和n個人在某門課中 考試成績,并能儲存成績?nèi)缓笥嬎闫骄?,顯示出來。(2)、思考程序要用到的算法原理:使用數(shù)組類模板定義浮點型數(shù)組存儲考試成績;利用 班級總?cè)藬?shù)與其在課程 A中的總分之比的原理求平均值。(3)、設(shè)計程序流程圖(見 2.3 )。(4)、編寫程序(見 2.4 )。2.1程序功能使用戶能根據(jù)程序提示輸入班級學(xué)生人數(shù)n和n個人在某門課中考試成績,并能儲
4、存成績?nèi)缓笥嬎闫骄担@示出來。2.2算法原理(1 )、使用數(shù)組類模板定義浮點型數(shù)組存儲考試成績;2.3程序流程圖S出 AverScore結(jié)束2.4程序主要模塊或者函數(shù)#ifndef ARRAY_H#defi ne ARRAY_H#in elude <iostream.h>#i nclude <stdlib.h>#ifndef NULLcon st int NULL = 0;#en difenum ErrorType/錯誤類型集合,共有三種類型in validArraySize, memoryAllocatio nError, i ndexOutOfRa nge;cha
5、r *errorMsg="In valid array size", "Memory allocatio n error","In valid in dex:"template <class T>class Arrayprivate:T* alist; /T類型指針,用于存放動態(tài)分配的數(shù)組內(nèi)存首地址int size;void Error(ErrorType error,i nt badI ndex=0) con st;public:Array(i nt sz = 50);Array(c onst Array<T>
6、;& A);Array(void);/重載"="使數(shù)組對象可以整體賦值A(chǔ)rray<T>& operator= (const Array<T>& rhs);T& operator(i nt i);operator T* (void) con st;int ListSize(void) con st;void Resize(i nt sz);/以下為類成員函數(shù)的實現(xiàn)template <class T>void Array<T>:Error(ErrorType error, i nt bad In d
7、ex) constcout << errorMsgerror;if (error = in dexOutOfRa nge)cout << badI ndex; /如果是下標(biāo)越界錯,輸出錯誤的下標(biāo)cout << en dl;exit(1);template <class T>Array<T>:Array(i nt sz)if (sz <= 0) /sz為數(shù)組大小(元素個數(shù)),若小于0,則輸出錯誤信息 Error(i nvalidArraySize);size = sz;alist = new Tsize; /動態(tài)分配size個T類
8、型的元素空間if (alist = NULL) /如果分配內(nèi)存不成功,輸出錯誤信息Error(memoryAllocatio nError);template <class T>Array<T>:Array(void)delete alist;template <class T>Array<T>:Array(c onst Array<T >& X)/從對象X取得數(shù)組大小,并賦值給當(dāng)前對象的成員int n = X.size;size = n;alist = new Tn;if (alist = NULL) /如果分配內(nèi)存不成功,
9、輸出錯誤信息Error(memoryAllocatio nError)T* srcptr = X.alist;T* destptr = alist;while (n-)*destptr+ = *srcptr+;/重載"="運算符,將對象rhs賦值給本對象。實現(xiàn)對象之間的整體賦值template <class T>Array<T>& Array<T>:operator= (const Array<T>& rhs)int n = rhs.size;if (size != n)delete alist;alist =
10、 new Tn; /重新分配n個元素的內(nèi)存if (alist = NULL)Error(memoryAllocatio nError);size = n; /記錄本對象的數(shù)組大小/從rhs向本對象復(fù)制元素T* destptr = alist;T* srcptr = rhs.alist;while (n-)*destptr+ = *srcptr+;return *this;/重載下標(biāo)操作符,實現(xiàn)與普通數(shù)組一樣通過下標(biāo)訪問元素,并且具有越界檢查功能template <class T>T& Array<T>:operator (i nt n)/檢查下標(biāo)是否越界if (
11、n < 0 | n > size-1)Error(i ndexOutOfRa nge, n);/返回下標(biāo)為n的數(shù)組元素return alist n;template <class T>Array<T>:operator T* (void) const/返回當(dāng)前對象中私有數(shù)組的首地址return alist;/取當(dāng)前數(shù)組的大小template <class T>int Array<T>:ListSize(void) constreturn size;/將數(shù)組大小修改為sztemplate <class T>void Arra
12、y<T>:Resize(i nt sz)if (sz <= 0)Error(i nvalidArraySize);if (sz = size)return;T* n ewlist = new Tsz;if (n ewlist = NULL)Error(memoryAllocatio nError);int n = (sz <= size) ? sz : size;/將原有數(shù)組中前n個元素復(fù)制到新數(shù)組中T* srcptr = alist;T* destptr = n ewlist;while (n-)*destptr+ = *srcptr+;delete alist;al
13、ist = n ewlist;size = sz;#en difvoid mai n()int n;double AverScore,TotalScore = 0;cout << "請輸入學(xué)生人數(shù):”;cin >> n;Array<float> Score (n);for (in t i=0; i<n; i+)cout << "請輸入第"<< i+1 <<" 個學(xué)生的課程 A成績(0100):" cin >> Scorei;TotalScore += Sc
14、orei;AverScore = TotalScore/n;cout << " 平均成績?yōu)?” << AverScore << endl;3軟件運行或者測試結(jié)果若一個班學(xué)生人數(shù)為 10,他們的在課程 A中的考試成績分別為 88、78、90、93、69、89、 95、77、79、90,根據(jù)程序提示依次輸入,則程序運行結(jié)果如圖所示:I H:DEbuigqq 心貳123456789主冃土冃至冃主冃主冃至冃主冃至口0 0- 0 00 0 0 0 0 -0 0 R- 0 0 0 0 0 1曠 0 0 0 0 0- 0 0 0 0 ( <<<
15、<<<<< 貝 績績績績績績績績薯 e- 成成成成成成成成成昉nu AAAAAAAAACf i 口王口王口至口王口王口王口王口王口王t 古4JA 丄 K 亠員ZCA三4ZCA梟 n rnp mrmkmFCmKIL D 0il課isililisilil內(nèi) c T二三 二-一二一二一二 三一二二-些 t f-L.二上3匸一53匸二空些苣8 d 123456789 1 y-. y- 學(xué)第第第第第第第第第第績斷 入入兀入入兀入入兀入入成S “ j j j . j s88 ?890936989957779904軟件設(shè)計過程中遇到的問題以及解決辦法在這次設(shè)計程序的過程中遇到了
16、許多問題:比如對類模板、數(shù)組的內(nèi)存分配、指針、析構(gòu)函數(shù)等知識掌握不牢固,使得拿到題目無從下手;不知道重載運算符“=”可以對數(shù)組整體賦值;對this指針概念模糊;但最后都通過請教別人和翻課本,上網(wǎng)查找相關(guān)資料等途 徑解決了。參考文獻:C+語言程序設(shè)計(第四版)、C+程序設(shè)計(第二版)譚浩強著、Visual C+編程之道。5總結(jié)這兩周的C+課程設(shè)計,時間上說長不長,說短也不短,卻讓我學(xué)到了很多:對很多函數(shù) 有了新的認識,對 C+有了更深刻的了解,增強了程序的編寫能力,鞏固了專業(yè)知識。在寫 程序的過程中我學(xué)到了自己曾經(jīng)不知道或一些不會用的函數(shù),特別是多文件結(jié)構(gòu),類模板, 運算符的重載等;也讓我明白了學(xué)好 C+是多么重要;在自己基礎(chǔ)知識掌握不牢固的情況下, 要設(shè)計一個程序是多么難??偟膩碚f
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學(xué)生職業(yè)規(guī)劃課程總結(jié)
- 設(shè)計質(zhì)量管控體系構(gòu)建與實施
- 山東省青島超銀中學(xué)2025年初三1月統(tǒng)一考試英語試題含答案
- 山西省(晉城地區(qū))2025年初三下學(xué)期開學(xué)摸底聯(lián)考數(shù)學(xué)試題試卷含解析
- 2025年供應(yīng)鏈管理與物流專業(yè)考試題及答案
- 新生兒護理記錄書寫規(guī)范
- 基于STM32的智能紅綠燈控制系統(tǒng)設(shè)計
- 肺炎病人護理查房
- 2025年公司安全培訓(xùn)考試試題含答案【新】
- 幼兒園尖銳物品安全教育
- 2025年重慶市中考物理模擬試卷(一)(含解析)
- 演出經(jīng)紀(jì)人員資格備考資料2025
- DZ∕T 0227-2010 地質(zhì)巖心鉆探規(guī)程(正式版)
- GB/T 23858-2009檢查井蓋
- 有限空間作業(yè)安全培訓(xùn)(飼料廠)課件
- 分 包 工 程 量 確 認 單
- 產(chǎn)后抑郁的護理共45張課件
- T∕CSRME 016-2021 城市地下空間網(wǎng)絡(luò)化拓建工程技術(shù)規(guī)范
- 員工個人信息保護合規(guī)要點清單
- 山東省危廢處理名錄
- 班組安全安全考核表
評論
0/150
提交評論