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

下載本文檔

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

文檔簡(jiǎn)介

《C++程序設(shè)計(jì)》課程設(shè)計(jì)說(shuō)明書計(jì)算器求大數(shù)院部:計(jì)算機(jī)與信息科學(xué)學(xué)院 學(xué)生姓名:專業(yè):軟件工程班級(jí):1401完成時(shí)間:2015年6月目錄TOC\o"1-3"\t"正文文本縮進(jìn),4"\h1.設(shè)計(jì)概要 31.1設(shè)計(jì)背景 31.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 32.需求分析 42.1基本需求 42.2實(shí)現(xiàn)功能 43.算法設(shè)計(jì) 53.1概要說(shuō)明 53.2模塊間調(diào)用關(guān)系 53.3詳細(xì)說(shuō)明(AbstractDataType描述) 53.4流程圖及主要函數(shù)模塊說(shuō)明 63.4.1.判斷運(yùn)算符優(yōu)先權(quán) 6(1)算符優(yōu)先關(guān)系表 6(2)算法代碼 63.4.2.主操作函數(shù) 7(1)算法概要流程圖 7(2)操作過(guò)程 8(3)算法代碼 83.4.3二元運(yùn)算函數(shù) 9(1)算法代碼 104.測(cè)試結(jié)果 114.1簡(jiǎn)單表達(dá)式求值 114.2復(fù)雜表達(dá)式求值 115.總結(jié) 125.1改進(jìn)思想 125.2經(jīng)驗(yàn)和體會(huì) 12參考文獻(xiàn) 14附錄 15源程序 15

1.設(shè)計(jì)概要1.1設(shè)計(jì)背景利用數(shù)組存儲(chǔ),根據(jù)需要改變大小。轉(zhuǎn)化乘除法的思想,將乘法轉(zhuǎn)化為加法,將除法轉(zhuǎn)化為減法,減少程序計(jì)算的難度。1.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)1.乘法用逐位相乘由各位到高位一次進(jìn)行,然后初步確定計(jì)算結(jié)果的長(zhǎng)度s1[i]=c1[len1-i-1]-'0'將字符串轉(zhuǎn)化為整型,并反著存放。2.除法轉(zhuǎn)化為減法的思想來(lái)計(jì)算,大大降低計(jì)算設(shè)計(jì)的難度,利用數(shù)來(lái)存儲(chǔ)。并可以根據(jù)計(jì)算位數(shù)要求設(shè)計(jì)數(shù)組大小以滿足需求。3.通過(guò)主函數(shù)來(lái)實(shí)現(xiàn)函數(shù)的調(diào)用。

2.1需求分析在調(diào)查與科研實(shí)驗(yàn)中經(jīng)常需要計(jì)算位數(shù)相對(duì)較大的加減乘除法,但是計(jì)算機(jī)本身提供的數(shù)據(jù)類型無(wú)法保存幾百位甚至上千位的。所以針對(duì)超過(guò)手機(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ù),實(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ù)測(cè)試結(jié)果圖4-1主菜單圖4-2大數(shù)加法圖4-3大數(shù)除法圖4-4進(jìn)制轉(zhuǎn)換實(shí)驗(yàn)總結(jié)5.1改進(jìn)思想1.減法不能用小數(shù)減去大數(shù),即不能有負(fù)數(shù)結(jié)果。2.除法不能保留小數(shù)點(diǎn)后的數(shù)字,精確度還有待提高。3.程序的界面也還有待改進(jìn),可以進(jìn)一步將界面進(jìn)行美化5.2經(jīng)驗(yàn)和體會(huì)大數(shù)的四則運(yùn)算雖然不難,但是要打破常規(guī),將乘法與除法換一種思想來(lái)計(jì)算,構(gòu)思方面有很大的挑戰(zhàn)。在這次試驗(yàn)中我們認(rèn)識(shí)到了對(duì)于特別長(zhǎng)的數(shù)的計(jì)算,只能化整為零,先求局部的結(jié)果,然后將各部分的結(jié)果綜合起來(lái),得到最終的結(jié)果。比如加法就是從最低位開始計(jì)算,判斷進(jìn)位后再向高位計(jì)算。但是乘除法雖然進(jìn)行了轉(zhuǎn)換,但是數(shù)字如果太大的話,進(jìn)行加減法的次數(shù)也是很龐大的。本程序是分工完成的,所以我們也充分認(rèn)識(shí)到了團(tuán)隊(duì)協(xié)作的重要性,通過(guò)一起的討論與分工,我們能得出解決問(wèn)題的最好辦法,各抒己見,在爭(zhēng)論中互相成長(zhǎng)。此外,這次的課程設(shè)計(jì)進(jìn)一步加強(qiáng)了我們進(jìn)行編程,調(diào)試,處理問(wèn)題的能力,加深了我們對(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)不足而帶來(lái)的修改麻煩。雖然這只是一個(gè)小小的程序,但對(duì)我們之后的影響確實(shí)很大的。參考文獻(xiàn)[⒈]譚浩強(qiáng).C++程序設(shè)計(jì)(第四版).清華大學(xué)出版社,2010年6月[⒉]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第四版).清華大學(xué)出版社,2010年6月[⒊]崔進(jìn)平等.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版).北京:中國(guó)鐵道出版社,2008年11月[⒋]StephenPrata.CPrimerPlus中文版(第五版).人民郵電出版社,2005年2月附錄源程序#include<iostream>usingnamespacestd;#include<malloc.h>#include<stdio.h>#include<string.h>#include<windows.h>#include<malloc.h>#defineNUM1000typedefstructSTACKNOTE{chardata;STACKNOTE*next;}LinkStack,*STACK;intInit_stack();intEmpty_Stack();intStack_conversion();intPop_Stack();intPush_Stack_Elem();voidmenu();voidnumzero(ints[]);voidstrzero(chars[]);voidadd(chara1[],chara2[]);voidjian(charb1[],charb2[]);voidcheng(charc1[],charc2[]);voidchu(chard1[],chard2[]);voidmenu(){system("cls");intcount=0;printf("\n\n\t**********計(jì)算器**********\n");printf("\t1.大數(shù)加法\n");printf("\t2.大數(shù)減法\n");printf("\t3.大數(shù)乘法\n");printf("\t4.大數(shù)除法\n");printf("\t5.進(jìn)制轉(zhuǎn)換\n");printf("\t**************************\n\n");intnum;voidjian(charb1[],charb2[]){intv1[NUM];intv2[NUM];intv3[NUM],L,i,z;numzero(v1);numzero(v2);numzero(v3);L=strlen(b1);for(i=0;i<L;i++)v1[i]=b1[L-1-i]-'0';L=strlen(b2);for(i=0;i<L;i++)v2[i]=b2[L-1-i]-'0';for(i=0;i<NUM;i++){v3[i]=v1[i]-v2[i];}/*for(i=0;i<9;i++){cout<<v3[i]<<"";}cout<<endl;*/intjw=0;for(i=0;i<NUM;i++){if(v3[i]<0){v3[i]=10-abs(v3[i]);v3[i+1]-=1;}}z=0;for(i=NUM-1;i>=0;i--){if(v3[i]==-1&&z==0){printf("-");v3[i]=abs(v3[i]);break;}if(v3[i]!=0&&v3[i]!=-1){z=1;}}z=0;printf("\n計(jì)算結(jié)果為:");for(i=NUM-1;i>=0;i--){if(z==0){if(v3[i]!=0){printf("%d",v3[i]);z=1;}}else{printf("%d",v3[i]);}}if(z==0)printf("0");printf("\n");printf("請(qǐng)按任意鍵返回\n");getchar();getchar();getchar();menu();}voidcheng(charc1[],charc2[]){ints1[NUM],s2[NUM],ss[NUM];//s1,s2:兩個(gè)乘數(shù);s:乘積的結(jié)果inti,j,k,c;intlen1,len2,len;len1=strlen(c1);len2=strlen(c2);len=len1+len2;//初步確定乘積的長(zhǎng)度f(wàn)or(i=len1-1;i>=0;i--){s1[i]=c1[len1-i-1]-'0';//將字符串轉(zhuǎn)化為整型,并反著存放}for(i=len2-1;i>=0;i--){s2[i]=c2[len2-i-1]-'0';}numzero(ss);for(i=0;i<=len1-1;i++)for(j=0;j<=len2-1;j++)ss[i+j]=ss[i+j]+s1[i]*s2[j];//逐位相乘for(i=0,c=0;i<=len-1;i++)//處理進(jìn)位{k=ss[i]+c;ss[i]=k%10;c=k/10;}for(i=len-1;i>=0;i--)if(ss[i]!=0)break;//處理多余的零len=i+1;charline[NUM];//注意只有指針才可以返回去,不能定義成數(shù)組if(len==0){line[0]=0+'0';line[1]='\0';//字符串的結(jié)束標(biāo)志}else{for(i=0;i<=len-1;i++)line[i]=ss[len-i-1]+'0';line[len]='\0';//字符串的結(jié)束標(biāo)志}printf("\n計(jì)算結(jié)果為:");cout<<line<<endl;printf("\n");getchar();getchar();menu();}intStack_conversion(){system("cls");charstr[21];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(i=0;i<=strlen(str)-1;i++){charTemp_Conversion_number=str[i];Push_Stack_Elem(Conversion_Stack,Temp_Conversion_number);count++;}longlongRes_Number=0;charTempNum;intk;for(i=0,k=1;i<count;i++){Pop_Stack(Conversion_S

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論