數(shù)據(jù)結(jié)構(gòu) 計(jì)算器求大數(shù).._第1頁
數(shù)據(jù)結(jié)構(gòu) 計(jì)算器求大數(shù).._第2頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+程序設(shè)計(jì)課程設(shè)計(jì)說明書計(jì)算器求大數(shù)院部:計(jì)算機(jī)與信息科學(xué)學(xué)院學(xué)生姓名:專業(yè):軟件工程班級(jí):1401完成時(shí)間:2015年6月1. 設(shè)計(jì)概要錯(cuò)誤!未定義書簽。1.1設(shè)計(jì)背景錯(cuò)誤!未定義書簽。1.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)錯(cuò)誤!未定義書簽。2. 需求分析錯(cuò)誤!未定義書簽。2.1基本需求錯(cuò)誤!未定義書簽。2.2實(shí)現(xiàn)功能錯(cuò)誤!未定義書簽。3. 算法設(shè)計(jì)錯(cuò)誤!未定義書簽。3.1概要說明錯(cuò)誤!未定義書簽。3.2模塊間調(diào)用關(guān)系錯(cuò)誤!未定義書簽。3.3詳細(xì)說明(AbstractDataType描述)錯(cuò)誤!未定義書簽。3.4流程圖及主要函數(shù)模塊說明錯(cuò)誤!未定義書簽。3.4.1. 判斷運(yùn)算符優(yōu)先權(quán)錯(cuò)誤!未定義書簽。(1)

2、算符優(yōu)先關(guān)系表錯(cuò)誤!未定義書簽。(2) 算法代碼錯(cuò)誤!未定義書簽。3.4.2. 主操作函數(shù)錯(cuò)誤!未定義書簽。(1) 算法概要流程圖錯(cuò)誤!未定義書簽。(2) 操作過程錯(cuò)誤!未定義書簽。(3) 算法代碼錯(cuò)誤!未定義書簽。3.4.3二元運(yùn)算函數(shù)錯(cuò)誤!未定義書簽。(1)算法代碼錯(cuò)誤!未定義書簽。4. 測(cè)試結(jié)果54.1簡(jiǎn)單表達(dá)式求值錯(cuò)誤!未定義書簽。4.2復(fù)雜表達(dá)式求值錯(cuò)誤!未定義書簽。5. 總結(jié)錯(cuò)誤!未定義書簽。5.1改進(jìn)思想錯(cuò)誤!未定義書簽。5.2經(jīng)驗(yàn)和體會(huì)錯(cuò)誤!未定義書簽。參考文獻(xiàn)8附錄11源程序111.設(shè)計(jì)概要1.1設(shè)計(jì)背景利用數(shù)組存儲(chǔ),根據(jù)需要改變大小。轉(zhuǎn)化乘除法的思想,將乘法轉(zhuǎn)化為加法,將除

3、法轉(zhuǎn)化為減法,減少程序計(jì)算的難度。1.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)1. 乘法用逐位相乘由各位到高位一次進(jìn)行,然后初步確定計(jì)算結(jié)果的長(zhǎng)度sli=cllenl-i-1-'0'將字符串轉(zhuǎn)化為整型,并反著存放。2. 除法轉(zhuǎn)化為減法的思想來計(jì)算,大大降低計(jì)算設(shè)計(jì)的難度,利用數(shù)來存儲(chǔ)。并可以根據(jù)計(jì)算位數(shù)要求設(shè)計(jì)數(shù)組大小以滿足需求。3. 通過主函數(shù)來實(shí)現(xiàn)函數(shù)的調(diào)用。2.1需求分析在調(diào)查與科研實(shí)驗(yàn)中經(jīng)常需要計(jì)算位數(shù)相對(duì)較大的加減乘除法,但是計(jì)算機(jī)本身提供的數(shù)據(jù)類型無法保存幾百位甚至上千位的。所以針對(duì)超過手機(jī)與計(jì)算器計(jì)算位數(shù)的四則運(yùn)算,設(shè)計(jì)出能實(shí)現(xiàn)長(zhǎng)整數(shù)運(yùn)算的程序。2.1實(shí)現(xiàn)功能大數(shù)加法:輸入兩個(gè)位數(shù)較大的數(shù)

4、,實(shí)現(xiàn)加法計(jì)算。大數(shù)減法:輸入兩個(gè)位數(shù)較大的數(shù),實(shí)現(xiàn)減法計(jì)算,但不能計(jì)算結(jié)果為負(fù)數(shù)的數(shù)。大數(shù)乘法:輸入兩個(gè)位數(shù)較大的數(shù),實(shí)現(xiàn)乘法計(jì)算。大數(shù)除法:輸入兩個(gè)位數(shù)較大的數(shù),實(shí)現(xiàn)除法計(jì)算,計(jì)算結(jié)果只保留整數(shù)。進(jìn)制轉(zhuǎn)換:指定輸入什么進(jìn)制的數(shù),可將其轉(zhuǎn)變成任意進(jìn)制數(shù)4.測(cè)試結(jié)果£&口-f-D算計(jì)法法法法換j一一數(shù)數(shù)數(shù)一一大大大大進(jìn)二二12345請(qǐng)選擇你的操作圖4-1主菜單cy/o尋算計(jì)-法法法法換SSR一一數(shù)數(shù)皴-大大大大進(jìn)12345=57365938=452738637600479051數(shù)數(shù)操一二K=第第富的Z3=1S:45273863817413843返回i薯蠶返回=57365938

5、=45273863760047905法法法法換SR123451數(shù)數(shù)操一二K=第第富的選tUtUAA.jsrd別=3S:45273863817413843返回i薯蠶返回£&口-f-s算計(jì)法法法法換一一數(shù)埶藪一一大大大大進(jìn)二二57364389589053745877677488操一二K:第第篇的saw選青霽AAft®主冃主冃H算結(jié)果為:10圖4-4進(jìn)制轉(zhuǎn)換請(qǐng)輸人您要輸人什么進(jìn)制的數(shù)備輸入您要轉(zhuǎn)化的數(shù)14請(qǐng)問您要把均轉(zhuǎn)化成什么進(jìn)制的數(shù)10經(jīng)過計(jì)算謳進(jìn)制的均轉(zhuǎn)化為佃進(jìn)制的結(jié)果為:青按任意鍵返回5.實(shí)驗(yàn)總結(jié)51改進(jìn)思想1.減法不能用小數(shù)減去大數(shù),即不能有負(fù)數(shù)結(jié)果。2除法不能保

6、留小數(shù)點(diǎn)后的數(shù)字,精確度還有待提高。3.程序的界面也還有待改進(jìn),可以進(jìn)一步將界面進(jìn)行美化5.2經(jīng)驗(yàn)和體會(huì)大數(shù)的四則運(yùn)算雖然不難,但是要打破常規(guī),將乘法與除法換一種思想來計(jì)算,構(gòu)思方面有很大的挑戰(zhàn)。在這次試驗(yàn)中我們認(rèn)識(shí)到了對(duì)于特別長(zhǎng)的數(shù)的計(jì)算,只能化整為零,先求局部的結(jié)果,然后將各部分的結(jié)果綜合起來,得到最終的結(jié)果。比如加法就是從最低位開始計(jì)算,判斷進(jìn)位后再向高位計(jì)算。但是乘除法雖然進(jìn)行了轉(zhuǎn)換,但是數(shù)字如果太大的話,進(jìn)行加減法的次數(shù)也是很龐大的。本程序是分工完成的,所以我們也充分認(rèn)識(shí)到了團(tuán)隊(duì)協(xié)作的重要性,通過一起的討論與分工,我們能得出解決問題的最好辦法,各抒己見,在爭(zhēng)論中互相成長(zhǎng)。此外,這次的

7、課程設(shè)計(jì)進(jìn)一步加強(qiáng)了我們進(jìn)行編程,調(diào)試,處理問題的能力,加深了我們對(duì)算法及數(shù)據(jù)結(jié)構(gòu)的認(rèn)識(shí),對(duì)于程序的一些基本結(jié)構(gòu)也更加地熟悉,課本知識(shí)也能夠更加熟練地運(yùn)用。同時(shí)我們也意識(shí)到,開發(fā)程序的早期計(jì)劃要做的充分,以免出現(xiàn)程序完成后發(fā)現(xiàn)不足而帶來的修改麻煩。雖然這只是一個(gè)小小的程序,但對(duì)我們之后的影響確實(shí)很大的。參考文獻(xiàn)1.譚浩強(qiáng).C+程序設(shè)計(jì)(第四版).清華大學(xué)出版社,2010年6月2.譚浩強(qiáng).C語言程序設(shè)計(jì)(第四版).清華大學(xué)出版社,2010年6月3.崔進(jìn)平等.數(shù)據(jù)結(jié)構(gòu)(C語言版).北京:中國鐵道出版社,2008年11月4.StephenPrata.CPrimerPlus中文版(第五版).人民郵電出

8、版社,2005年2月源程序#includeviostream>usingnamespacestd;#includevmalloc.h>#includevstdio.h>#includevstring.h>#includevwindows.h>#includevmalloc.h>#defineNUM1000typedefstructSTACKNOTEchardata;STACKNOTE*next;LinkStack,*STACK;intInit_stack();intEmpty_Stack();intStack_conversion();intPop_Stac

9、k();intPush_Stack_Elem();voidmenu();voidnumzero(ints);voidstrzero(chars);voidadd(charal,chara2);voidjian(charb1,charb2);voidcheng(charc1,charc2);voidchu(chard1,chard2);voidmenu()system("cls");intcount=0;printf("nnt*計(jì)算器*n")printf("t1.大數(shù)加法5");printf("t2.大數(shù)減法5");

10、printf("t3.大數(shù)乘法5");printf("t4.大數(shù)除法5");printf("t5.進(jìn)制轉(zhuǎn)換n");printf("t*intnum;voidjian(charbl,charb2)intv1NUM;intv2NUM;intv3NUM,L,i,z;numzero(v1);numzero(v2);numzero(v3);L=strlen(b1);for(i=0;i<L;i+)v1i=b1L-1-i-'0'L=strlen(b2);for(i=0;i<L;i+)v2i=b2L-1-i-&#

11、39;0'for(i=0;i<NUM;i+)v3i=v1i-v2i;嚴(yán)for(i=0;iv9;i+)coutvvv3ivv""coutvvendl;*/intjw=0;for(i=0;i<NUM;i+)if(v3i<0)v3i=10-abs(v3i);v3i+1-=1;z=0;for(i=NUM-1;i>=0;i-)if(v3i=-1&&z=0)printf("-");v3i=abs(v3i);break;if(v3i!=0&&v3i!=-1)z=1;z=0;printf("n計(jì)算

12、結(jié)果為:”);for(i=NUM-l;i>=0;i-)if(z=0)if(v3i!=0)printf(”d",v3i);z=1;elseprintf(”d",v3i);if(z=0)printf("0");printf("n");printf(”請(qǐng)按任意鍵返回n");getchar();getchar();getchar();menu();voidcheng(charc1,charc2)ints1NUM,s2NUM,ssNUM;/s1,s2:兩個(gè)乘數(shù);s:乘積的結(jié)果inti,j,k,c;intlen1,len2,len

13、;len1=strlen(c1);Ien2=strlen(c2);len=lenl+len2;/初步確定乘積的長(zhǎng)度for(i=lenl-1;i>=0;i-)s1i=c1len1-i-1-'0'/將字符串轉(zhuǎn)化為整型,并反著存放for(i=len2-1;i>=0;i-)s2i=c2len2-i-1-'0'numzero(ss);for(i=0;i<=len1-1;i+)for(j=0;j<=len2-1;j+)ssi+j=ssi+j+s1i*s2j;/逐位相乘for(i=0,c=0;i<=len-1;i+)處理進(jìn)位k=ssi+c;ssi

14、=k%10;c=k/10;for(i=len-1;i>=0;i-)if(ssi!=0)break;/處理多余的零len=i+1;charlineNUM;注意只有指針才可以返回去,不能定義成數(shù)組if(len=0)line0=0+'0'line1='0'字符串的結(jié)束標(biāo)志elsefor(i=0;i<=len-1;i+)linei=sslen-i-1+'0'linelen='0'/字符串的結(jié)束標(biāo)志printf("n計(jì)算結(jié)果為:”);coutvvlinevvendl;printf("n");getc

15、har();getchar();menu();intStack_conversion()system("cls");charstr21;intcount=0;intNumbers;inti;printf("請(qǐng)輸入您要輸入什么進(jìn)制的數(shù)n");cin>>Numbers;printf("請(qǐng)輸入您要轉(zhuǎn)化的數(shù)n");cin>>str;STACKConversion_Stack;Init_stack(Conversion_Stack);if(!Empty_Stack(Conversion_Stack)return0;for

16、(i=0;iv=strlen(str)-l;i+)charTemp_Conversion_number=stri;Push_Stack_Elem(Conversion_Stack,Temp_Conversion_number);count+;longlongRes_Number=O;charTempNum;intk;for(i=0,k=1;ivcount;i+)Pop_Stack(Conversion_Stack,TempNum);if(TempNum>='0'&&TempNumv=9)Res_Number+=(k*(TempNum-'O'

17、);if(TempNum>='a'&&TempNumv='z')Res_Number+=(k*(TempNum-'a'+10);if(TempNum>='A'&&TempNumv='Z')Res_Number+=(k*(TempNum-'A'+10);k*=Numbers;char*tempstr="0123456789ABCDEF"intj;printf("n請(qǐng)問您要把s轉(zhuǎn)化成什么進(jìn)制的數(shù)n",str);cin>

溫馨提示

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

評(píng)論

0/150

提交評(píng)論