數(shù)據(jù)結(jié)構(gòu)大數(shù)相乘_第1頁
數(shù)據(jù)結(jié)構(gòu)大數(shù)相乘_第2頁
數(shù)據(jù)結(jié)構(gòu)大數(shù)相乘_第3頁
數(shù)據(jù)結(jié)構(gòu)大數(shù)相乘_第4頁
數(shù)據(jù)結(jié)構(gòu)大數(shù)相乘_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課題名稱:大數(shù)相乘1. 問題描述計(jì)算機(jī)的內(nèi)存有限,而且各個(gè)函數(shù)類型的范圍有限,如果要計(jì)算兩個(gè)更大的乘數(shù),就會(huì)超出范圍,得到不精確的數(shù),如何得到更精確的數(shù),而又不受計(jì)算機(jī)內(nèi)存空間的限制,本程序就可以解決大數(shù)相乘的問題。2. 設(shè)計(jì)思路這個(gè)程序的關(guān)鍵是如何保存大數(shù)的各個(gè)數(shù)字,以及如何處理大數(shù)乘法的進(jìn)位問題。本人是運(yùn)用棧的思想做的,先定義一個(gè)整型的棧,大數(shù)傳入棧的整型數(shù)組中,在乘法運(yùn)算函數(shù)中,先從一個(gè)棧中取出一個(gè)大數(shù)S1的個(gè)位上的數(shù)字a,再?gòu)牧硪粋€(gè)大數(shù)S2取出一個(gè)個(gè)位數(shù)字b,再將a*b+d(d為進(jìn)位數(shù))的個(gè)位數(shù)字壓到棧S中,十位上進(jìn)位的數(shù)字先保存到d中,再?gòu)腟2中取出一個(gè)十位數(shù),與a相乘,得到的個(gè)位數(shù)

2、字再壓到棧S中,再?gòu)腟2中取出一個(gè)數(shù)字,以此類推,直到S2中的數(shù)字被a乘完,得到一個(gè)新的大數(shù)S,將該棧保存到A棧中,將S銷毀,再?gòu)腟1中取出大數(shù)的十位數(shù)字,與S2的各個(gè)數(shù)字相乘,得到一個(gè)新的大數(shù)壓到S中,將S保存到B中,將B移位處理后,然后與A相加得到另一個(gè)大數(shù),以此類推,最終可相加得到想要的結(jié)果。這其中還用到了大數(shù)相加的原理。3. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)前面提到,要用到棧的操作,這里,由于一個(gè)大數(shù)的最大長(zhǎng)度是一定的,且大數(shù)最多執(zhí)行的操作是插入和刪除操作,所以順序存儲(chǔ)結(jié)構(gòu)可以帶來更大益處。為了便于大數(shù)相加,將大數(shù)的各個(gè)數(shù)字存入到整型數(shù)組中。#define MAXSIZE 100typedef struc

3、t nodeint dataMAXSIZE;int top;SeqStack,*PSeqStack;4. 功能函數(shù)設(shè)計(jì)(1)棧初始化函數(shù)Init_SeqStack(char *ch)此函數(shù)是將傳入的字符處理成09的整數(shù)存入整型數(shù)組中。將*ch-0轉(zhuǎn)化為整數(shù)存入S-datai中,結(jié)束標(biāo)志是*ch不等于0(2) 首尾倒置函數(shù)Convert_SeqStack(PSeqStack A)此函數(shù)是將棧中的數(shù)值首尾顛倒,比如以前是1234,現(xiàn)在變成4321。只要將傳入的A的棧中的元素依次取出壓到C中,再返回C棧即可(3) 大數(shù)相加函數(shù)Add(PSeqStack S1,PSeqStack S2)此函數(shù)是處理兩

4、個(gè)大數(shù)相加的功能。將傳入的兩個(gè)大數(shù)壓到S1和S2中,當(dāng)S1或S2不為空時(shí),從S1中取出a,從S2中取出b,得到Result=(a+b)%10+d,其中初始時(shí)d=0,再判斷Result是否大于10,如果小于10直接壓到棧S中,如果大于10將Result%10壓入棧中,令d=(a+b)/10+Result/10;如果運(yùn)算后其中的一個(gè)棧空了,另一個(gè)不空的棧的數(shù)值加上進(jìn)位數(shù)d再直接壓到S中,這樣可以得到一個(gè)大數(shù)。(4) 移位函數(shù)Crol(PSeqStack S,int n)將其中一位大數(shù)取出一位數(shù)字與另一位大數(shù)相乘的結(jié)果移位,然后相加,從各位開始,每乘一個(gè)數(shù),都要移位一個(gè)0(5) 復(fù)制函數(shù)Copy_S

5、eqStack(PSeqStack A,PSeqStack B)將一個(gè)A棧中的元素拷貝到B棧中,先將A中的元素壓到C棧中,再將C棧中的元素壓到B棧中,即可實(shí)現(xiàn)復(fù)制功能(6) 大數(shù)相乘函數(shù)Multiply(PSeqStack S1,PSeqStack S2)此函數(shù)是實(shí)現(xiàn)大數(shù)相乘的核心算法。主要思想就是將S1中取出個(gè)位數(shù)a,分別與S2中的各個(gè)數(shù)相乘得到新的大數(shù),再取S1中的十位數(shù),與S1大數(shù)相乘,以此類推,然后將各個(gè)大數(shù)進(jìn)行移位處理再相加5. 編碼實(shí)現(xiàn)#include stdafx.h#include stdlib.h#include stdio.h#include string.h#define

6、 MAXSIZE 100typedef struct nodeint dataMAXSIZE;int top;SeqStack,*PSeqStack;void Destroy_SeqStack(PSeqStack *S)if(*S)free(*S);*S=NULL;return;int Push_SeqStack(PSeqStack S,int x)if(S-top=MAXSIZE-1)return 0;elseS-top+;S-dataS-top=x;return 1;PSeqStack Init_SeqStack(char *ch)PSeqStack S;int i=0;char *hea

7、d;S=(PSeqStack)malloc(sizeof(SeqStack);if(S)S-top=-1;head=ch;while(*ch!=0)if(*head=-)S-datai=(*(+ch)-0)*(-1);elseS-datai=*ch-0;ch+;S-top+;i+;return S;int GetTop_SeqStack(PSeqStack S,int *x)if(S-top=-1)return 0;else*x=S-dataS-top;return 1;int Empty_SeqStack(PSeqStack S)if(S-top=-1)return 1;elsereturn

8、 0;int Pop_SeqStack(PSeqStack S,int *x)if(Empty_SeqStack(S)return 0;else*x=S-dataS-top;S-top-;return 1;void print(PSeqStack S)int i;for(i=0;itop;i+)printf(%d,S-datai);/將棧頂變成棧尾,棧尾變成棧頂PSeqStack Convert_SeqStack(PSeqStack A)int x;PSeqStack C;C=(PSeqStack)malloc(sizeof(SeqStack);if(C)C-top=-1;while(!Emp

9、ty_SeqStack(A)Pop_SeqStack(A,&x);Push_SeqStack(C,x);return C;PSeqStack Add(PSeqStack S1,PSeqStack S2)PSeqStack S;int d=0,a,b,Result;S=(PSeqStack)malloc(sizeof(SeqStack);if(S)S-top=-1;while(!Empty_SeqStack(S1)&!Empty_SeqStack(S2)Pop_SeqStack(S1,&a);Pop_SeqStack(S2,&b);Result=(a+b)%10+d;/判斷Result是否大于等

10、于10if(Result/10=0)Push_SeqStack(S,Result);d=(a+b)/10;else if(Result/100)Push_SeqStack(S,Result%10);d=(a+b)/10+Result/10;while(!Empty_SeqStack(S1)Pop_SeqStack(S1,&a);Result=a%10+d;if(Result/10=0)Push_SeqStack(S,Result);d=a/10;elsePush_SeqStack(S,Result%10);d=a/10+Result/10;while(!Empty_SeqStack(S2)Po

11、p_SeqStack(S2,&a);Result=a%10+d;if(Result/10=0)Push_SeqStack(S,Result);d=a/10;elsePush_SeqStack(S,Result%10);d=a/10+Result/10;if(d!=0)Push_SeqStack(S,1);S=Convert_SeqStack(S);return S;PSeqStack Crol(PSeqStack S,int n)int i;for(i=0;itop=-1;while(!Empty_SeqStack(A)Pop_SeqStack(A,&x);Push_SeqStack(C,x)

12、;while(!Empty_SeqStack(B)Pop_SeqStack(B,&x);while(!Empty_SeqStack(C)Pop_SeqStack(C,&x);Push_SeqStack(A,x);Push_SeqStack(B,x);PSeqStack Multiply(PSeqStack S1,PSeqStack S2)PSeqStack S,A,B;int a,b,c,d=0,Result,i,count=0;S=(PSeqStack)malloc(sizeof(SeqStack);if(S)S-top=-1;A=(PSeqStack)malloc(sizeof(SeqSt

13、ack);if(A)A-top=-1;B=(PSeqStack)malloc(sizeof(SeqStack);if(B)B-top=-1;while(!Empty_SeqStack(S1)Pop_SeqStack(S1,&a);d=0;for(i=S2-top;i-1;i-)b=S2-datai;/printf(%d,b);Result=a*b%10+d;if(Result/10=0)Push_SeqStack(S,Result);d=a*b/10;else if(Result/100)Push_SeqStack(S,Result%10);d=a*b/10+Result/10;if(d!=0

14、)Push_SeqStack(S,d);/printf(nS為:);/print(S);S=Convert_SeqStack(S);if(count=0)Copy_SeqStack(S,A);/將S棧拷貝到A棧/printf(nA為:);/print(A);elseB=Crol(S,count);/將B左移count位/printf(nB為:);/print(B);A=Add(A,B);/printf(nA為:);/print(A);count+;Destroy_SeqStack(&S);S=(PSeqStack)malloc(sizeof(SeqStack);if(S)S-top=-1;A=

15、Convert_SeqStack(A);while(GetTop_SeqStack(A,&c)&c=0)Pop_SeqStack(A,&c);if(Empty_SeqStack(A)Push_SeqStack(A,0);A=Convert_SeqStack(A);return A;void main()PSeqStack A,B,C;int i;/char *ch1=1234876543329,*ch2=78656453534223656896;/char *ch1=99,*ch2=1;/char *ch1=111111111111111111111,*ch2=1111111111111111

16、11111;/char *ch1=11111111,*ch2=-11111111;/char *ch1=99996757657464,*ch2=0;char ch150,ch250;system(color 70);printf(請(qǐng)輸入第一個(gè)大數(shù):);gets(ch1);printf(n請(qǐng)輸入第二個(gè)大數(shù):);gets(ch2);printf(該乘式為:);A=Init_SeqStack(ch1);print(A);printf(*);B=Init_SeqStack(ch2);print(B);printf(n);/C=Add(A,B);C=Multiply(A,B);printf(n計(jì)算結(jié)果為

17、:);for(i=0;itop;i+)printf(%d,C-datai);/print(C);printf(n);/printf(實(shí)際結(jié)果為:78656454769100200225);6. 運(yùn)行與測(cè)試首先屏幕會(huì)提示你輸入第一個(gè)大數(shù),然后按回車鍵,屏幕會(huì)提示你輸入第二個(gè)大數(shù),再按回車鍵,即可得到計(jì)算結(jié)果7. 設(shè)計(jì)中存在的問題及感想本程序的缺陷對(duì)負(fù)數(shù)以及小數(shù)相乘沒有處理好,只能處理大的整數(shù),這是一個(gè)遺憾。其實(shí)這個(gè)大數(shù)相乘程序我是根據(jù)大數(shù)相加的思想來做的,大數(shù)相加的進(jìn)位思想是加進(jìn)位,而大數(shù)相乘是乘進(jìn)位,我想這是一樣的原理。大數(shù)相加時(shí),進(jìn)位數(shù)不超過1,而兩個(gè)一位數(shù)相乘得到的進(jìn)位數(shù)不超過8所以進(jìn)位數(shù)

18、都控制在一位數(shù)以內(nèi),這就不太復(fù)雜了。不過本程序還有一個(gè)問題,就是計(jì)算效率不高,雖然測(cè)試的時(shí)間不慢,但是我當(dāng)測(cè)試100000個(gè)數(shù)時(shí),其效率可見明顯降低。本來想用傅里葉算法的,可是傅里葉算法思想沒看懂,所以用了自己的本方法。課題名稱:模擬計(jì)算器1. 問題描述如果讓我們計(jì)算4+2*(8-5)-4/2=?我們?cè)撛趺从?jì)算?為了實(shí)現(xiàn)這個(gè)功能,特地做了這個(gè)計(jì)算器,可以對(duì)包含加、減、乘、除的運(yùn)算符的任意整型式進(jìn)行求解。2. 設(shè)計(jì)思路這個(gè)程序的關(guān)鍵就是如何將輸入的中綴表達(dá)式轉(zhuǎn)化為后綴表達(dá)式,然后再對(duì)后綴表達(dá)式進(jìn)行求值運(yùn)算。對(duì)于中綴表達(dá)式轉(zhuǎn)為后綴表達(dá)式,在參數(shù)先定義兩個(gè)指針型字符串infixexp和postfix

19、exp,infixexp是傳入的中綴表達(dá)式字符串,postfixexp是傳出的后綴表達(dá)式字符串,再定義一個(gè)棧,當(dāng)棧頂元素不等于#時(shí),然后判斷infixexp中的每一個(gè)字符是不是數(shù),如果是數(shù),傳入postfiexp中,否則進(jìn)一步判斷w是不是),若不是判斷棧頂元素的優(yōu)先級(jí),將操作符壓入棧中,以此類推,最終得到后綴表達(dá)式。對(duì)于后綴表達(dá)式的運(yùn)算,主要判斷是不是數(shù)字還是操作符,如果是數(shù)字壓到棧中,如果是操作符,從棧中取出兩個(gè)數(shù)字運(yùn)算。本人對(duì)于本程序還設(shè)計(jì)了一個(gè)操作界面,用的是MFC語言設(shè)計(jì)的,操作界面主要有一個(gè)文本框和19個(gè)按鈕組成,有清零按鈕,刪除按鈕,加減乘除按鈕,以及各個(gè)操作數(shù)按鈕,=按鈕,這些按

20、鈕大部分都是傳入相應(yīng)的字符串到文本框中,當(dāng)按下=號(hào)按鈕時(shí),再?gòu)奈谋究蛑械玫阶址瑢?duì)字符串進(jìn)行處理,然后運(yùn)算出結(jié)果。3. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)主要建立了一個(gè)CCaculatordlg的類,該類繼承MFC中CDialog的特征,這樣可以在MFC中建立一個(gè)單文檔對(duì)話框,這個(gè)對(duì)話框可以添加一些控件來做成一個(gè)計(jì)算器界面,如何對(duì)于該計(jì)算器操作,就要看控制各個(gè)控件函數(shù)怎么實(shí)現(xiàn)的。這里的類如下:class CCaculatorDlg : public CDialog/ Constructionpublic:int postfix_exp(char *A);int infix_exp_value(char *infi

21、xexp,char *postfixexp);int priority(char op);int IsNum(char c);/int infix_exp_value(char *infix,char *postfixexp);double num;/char CalculateExpre;/double CalculateResult;/double CalculateNum;char ch50,ch110,ch210,op;char text50;/stack S;CCaculatorDlg(CWnd* pParent = NULL); / standard constructor/ Di

22、alog Data/AFX_DATA(CCaculatorDlg)enum IDD = IDD_CACULATOR ;/ NOTE: the ClassWizard will add data members here/AFX_DATA/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CCaculatorDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Impl

23、ementationprotected:/ Generated message map functions/AFX_MSG(CCaculatorDlg)afx_msg void OnAdd();afx_msg void OnBtn1();afx_msg void OnBtn0();afx_msg void OnBtn2();afx_msg void OnBtn3();afx_msg void OnBtn4();afx_msg void OnBtn5();afx_msg void OnBtn6();afx_msg void OnBtn7();afx_msg void OnBtn8();afx_m

24、sg void OnBtn9();afx_msg void OnClear();afx_msg void OnDivide();afx_msg void OnEquals();afx_msg void OnMinus();afx_msg void OnMultiply();afx_msg void OnReset();virtual BOOL OnInitDialog();afx_msg void OnRbrackets();afx_msg void OnLbrackets();/AFX_MSGDECLARE_MESSAGE_MAP();4. 功能函數(shù)設(shè)計(jì)(1) 按鍵0函數(shù)CCaculator

25、Dlg:OnBtn0( )先得到文本框字符串,然后將該字符串末尾處加0,再將所有的字符串顯示到文本框中(2) 按鍵1函數(shù)CCaculatorDlg:OnBtn1( )先得到文本框字符串,然后將該字符串末尾處加1,再將所有的字符串顯示到文本框中(3) 按鍵2函數(shù)CCaculatorDlg:OnBtn2( )先得到文本框字符串,然后將該字符串末尾處加2,再將所有的字符串顯示到文本框中(4) 按鍵3函數(shù)CCaculatorDlg:OnBtn3( )先得到文本框字符串,然后將該字符串末尾處加3,再將所有的字符串顯示到文本框中(5) 按鍵4函數(shù)CCaculatorDlg:OnBtn4( )先得到文本框字

26、符串,然后將該字符串末尾處加4,再將所有的字符串顯示到文本框中(6) 按鍵5函數(shù)CCaculatorDlg:OnBtn5( )先得到文本框字符串,然后將該字符串末尾處加5,再將所有的字符串顯示到文本框中(7) 按鍵6函數(shù)CCaculatorDlg:OnBtn6( )先得到文本框字符串,然后將該字符串末尾處加6,再將所有的字符串顯示到文本框中(8) 按鍵7函數(shù)CCaculatorDlg:OnBtn7( )先得到文本框字符串,然后將該字符串末尾處加7,再將所有的字符串顯示到文本框中(9) 按鍵8函數(shù)CCaculatorDlg:OnBtn8( )先得到文本框字符串,然后將該字符串末尾處加8,再將所有

27、的字符串顯示到文本框中(10) 按鍵9函數(shù)CCaculatorDlg:OnBtn9( )先得到文本框字符串,然后將該字符串末尾處加9,再將所有的字符串顯示到文本框中(11) 按鍵加函數(shù)CCaculatorDlg:OnAdd( )先得到文本框字符串,然后將該字符串末尾處加+字符,再將所有的字符串顯示到文本框中(12) 按鍵減函數(shù)CCaculatorDlg:OnMinus( )先得到文本框字符串,然后將該字符串末尾處加-字符,再將所有的字符串顯示到文本框中(13) 按鍵乘函數(shù)CCaculatorDlg:OnMultiply( )先得到文本框字符串,然后將該字符串末尾處加*,再將所有的字符串顯示到文

28、本框中(14) 按鍵除函數(shù)CCaculatorDlg:OnDivide( )先得到文本框字符串,然后將該字符串末尾處加,再將所有的字符串顯示到文本框中(15) 按鍵清除函數(shù)CCaculatorDlg:OnClear( )先得到文本框字符串,然后將該字符串的最后一個(gè)字符刪除,再將所有的字符串顯示到文本框中(16) 按鍵左括號(hào)函數(shù)CCaculatorDlg:OnRbrackets()先得到文本框字符串,然后將該字符串末尾處加(,再將所有的字符串顯示到文本框中(17) 按鍵又括號(hào)函數(shù)CCaculatorDlg:OnLbrackets()先得到文本框字符串,然后將該字符串末尾處加),再將所有的字符串顯

29、示到文本框中(18) 按鍵左括號(hào)函數(shù)CCaculatorDlg:OnReset()將文本框中的字符串清零(19) 判斷是否是數(shù)字CCaculatorDlg:IsNum(char c)如果傳入的字符在09范圍內(nèi)則是數(shù)字(20) 優(yōu)先級(jí)函數(shù)CCaculatorDlg:priority(char op1)根據(jù)傳入的字符判斷優(yōu)先級(jí)(21) 將中綴表達(dá)式轉(zhuǎn)為后綴表達(dá)式CCaculatorDlg:infix_exp_value(char *infixexp, char *postfixexp)Infixexp是傳入的中綴表達(dá)式,即從文本框得到的字符,而postfixexp是后綴表達(dá)式,將要傳出去的字符串(

30、22) 計(jì)算后綴表達(dá)式的值postfix_exp(char *A)將轉(zhuǎn)化后的后綴表達(dá)式的字符串,傳入該函數(shù)中,可以運(yùn)算出結(jié)果(23) 按鍵等于函數(shù)CCaculatorDlg:OnEquals()先從文本框中得到字符串,再將字符串通過infix_exp_value轉(zhuǎn)華為后綴表達(dá)式,再通過postfix_exp轉(zhuǎn)化為數(shù)值,將計(jì)算所得的數(shù)值轉(zhuǎn)化為字符顯示到文本框中。5. 編碼實(shí)現(xiàn)#include stdafx.h#include Chess.h#include CaculatorDlg.h#include math.h#include using namespace std;#ifdef _DEBU

31、G#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CCaculatorDlg dialogCCaculatorDlg:CCaculatorDlg(CWnd* pParent /*=NULL*/): CDialog(CCaculatorDlg:IDD, pParent)/AFX_DATA_INIT(CCaculatorDlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INITvoid CCacula

32、torDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CCaculatorDlg)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CCaculatorDlg, CDialog)/AFX_MSG_MAP(CCaculatorDlg)ON_BN_CLICKED(IDC_ADD, OnAdd)ON_BN_CLICKED(IDC_BTN_1, OnBtn1)ON_BN_

33、CLICKED(IDC_BTN_0, OnBtn0)ON_BN_CLICKED(IDC_BTN_2, OnBtn2)ON_BN_CLICKED(IDC_BTN_3, OnBtn3)ON_BN_CLICKED(IDC_BTN_4, OnBtn4)ON_BN_CLICKED(IDC_BTN_5, OnBtn5)ON_BN_CLICKED(IDC_BTN_6, OnBtn6)ON_BN_CLICKED(IDC_BTN_7, OnBtn7)ON_BN_CLICKED(IDC_BTN_8, OnBtn8)ON_BN_CLICKED(IDC_BTN_9, OnBtn9)ON_BN_CLICKED(IDC_

34、CLEAR, OnClear)ON_BN_CLICKED(IDC_DIVIDE, OnDivide)ON_BN_CLICKED(IDC_EQUALS, OnEquals)ON_BN_CLICKED(IDC_MINUS, OnMinus)ON_BN_CLICKED(IDC_MULTIPLY, OnMultiply)ON_BN_CLICKED(IDC_RESET, OnReset)ON_BN_CLICKED(IDC_RBRACKETS, OnRbrackets)ON_BN_CLICKED(IDC_LBRACKETS, OnLbrackets)/AFX_MSG_MAPEND_MESSAGE_MAP(

35、)/ CCaculatorDlg message handlersvoid CCaculatorDlg:OnAdd() / TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);/*textlen=$;textlen+1=+;textlen+2=0;*/textlen=+;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text)

36、;UpdateData(FALSE); void CCaculatorDlg:OnBtn0() / TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=0;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);UpdateData(FALSE); void CCaculatorDlg:OnBtn1() /

37、TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=1;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);UpdateData(FALSE); void CCaculatorDlg:OnBtn2() / TODO: Add your control notification handler code h

38、ereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=2;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);UpdateData(FALSE);void CCaculatorDlg:OnBtn3() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strle

39、n(text);textlen=3;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnBtn4() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=4;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCacul

40、atorDlg:OnBtn5() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=5;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnBtn6() / TODO: Add your control notification handler code hereint len;Get

41、DlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=6;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnBtn7() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);/if(GetDlgItem(IDC_EDIT1)-GetWindowText(t

42、ext,50)=+|GetDlgItem(IDC_EDIT1)-GetWindowText(text,50)=-/|GetDlgItem(IDC_EDIT1)-GetWindowText(text,50)=*|GetDlgItem(IDC_EDIT1)-GetWindowText(text,50)=/)/GetDlgItem(IDC_EDIT1)-SetWindowText();/GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);/len=strlen(text);textlen=7;textlen+1=0;GetDlgItem(IDC_EDIT1)-S

43、etWindowText(text);void CCaculatorDlg:OnBtn8() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=8;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnBtn9() / TODO: Add your control notificatio

44、n handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=9;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnClear() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen

45、(text);textlen-1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnDivide() / TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);/*textlen=$;textlen+1=/;textlen+2=0;*/textlen=/;textlen+1=0;GetDlgItem

46、(IDC_EDIT1)-SetWindowText(text);UpdateData(FALSE); /DEL void CCaculatorDlg:OnDot() /DEL /DEL / TODO: Add your control notification handler code here/DEL /DEL void CCaculatorDlg:OnEquals() / TODO: Add your control notification handler code hereUpdateData();int num1,num2,num3,len,len1;GetDlgItem(IDC_E

47、DIT1)-GetWindowText(text,50);len=strlen(text);/*textlen=$;textlen+1=#;textlen+2=0;*/textlen=#;textlen+1=0;infix_exp_value(text,ch);/len1=strlen(ch);/chlen1=0;/chlen1+1=0;/計(jì)算后綴表達(dá)式的值num1=postfix_exp(ch);/num1=atoi(ch1);/num2=atoi(ch2);/*if(op=+)num3=num1+num2;else if(op=-)/MessageBox(op=-);num3=num1-n

48、um2;else if(op=*)num3=num1*num2;else if(op=/)if(num2=0)MessageBox(親,除數(shù)不能為零你知道不?);GetDlgItem(IDC_EDIT1)-SetWindowText();elsenum3=num1/num2;*/itoa(num1,ch1,10);GetDlgItem(IDC_EDIT1)-SetWindowText(ch1);void CCaculatorDlg:OnMinus() / TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);/*textlen=$;textlen+1=-;textlen+2=0;*/textlen=-;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetW

溫馨提示

  • 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. 人人文庫(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)論