秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

通俗易懂版基于MFC科學(xué)計算器

上傳人:仙*** 文檔編號:28909967 上傳時間:2021-09-18 格式:DOC 頁數(shù):39 大?。?19.51KB
收藏 版權(quán)申訴 舉報 下載
通俗易懂版基于MFC科學(xué)計算器_第1頁
第1頁 / 共39頁
通俗易懂版基于MFC科學(xué)計算器_第2頁
第2頁 / 共39頁
通俗易懂版基于MFC科學(xué)計算器_第3頁
第3頁 / 共39頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《通俗易懂版基于MFC科學(xué)計算器》由會員分享,可在線閱讀,更多相關(guān)《通俗易懂版基于MFC科學(xué)計算器(39頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、. 2013/6/22 作者編寫的科學(xué)強大的易懂的新手入門的科學(xué)計算器, 基于MFC編寫的科學(xué)計算器 指導(dǎo)教師對課程設(shè)計的評定意見 搞 要 本課程設(shè)計是在基于對話框的應(yīng)用程序中模擬一個計算器,本計算器可以進行十進制下的四則運算(加、減、乘、除)和四則混合運算,可以把十進制轉(zhuǎn)化為二進制或十六進制,可以進行一些常用的函數(shù)運算(比如sin、cos、tan、cot、sqrt、ln等),還可以支持帶“(”,“)”符號的表達式的計算。系統(tǒng)開發(fā)平臺為Windows XP,程序設(shè)計設(shè)計語言采用Visual C++6.0,程序運行平臺為Windows 98/2000/XP。程序通過調(diào)試運

2、行,初步實現(xiàn)了設(shè)計目標(biāo)。 關(guān)鍵詞 程序設(shè)計;計算器;C++; 1 引言 在現(xiàn)代社會中,計算器已經(jīng)進入了每一個家庭,人們在生活和學(xué)習(xí)中經(jīng)常需要使用到計算器,它的出現(xiàn)大大減少了人們在計算方面的工作量,可以說它在人們生活和學(xué)習(xí)中是不可缺少的。 1.1 C++介紹 C++語言的主要特點表現(xiàn)在兩個方面,一是全面兼容C語言,二是支持面向?qū)ο蟮某绦蛟O(shè)計方法[1]。 (1) C++是一個更好的C,它保持了C語言的優(yōu)點,大多數(shù)的C程序代碼略作修改或不作修改就可在C++的集成環(huán)境下調(diào)試和運行。這對于繼承和開發(fā)當(dāng)前已在廣泛的軟件是非常重要的,可以節(jié)省大量的人力和物力。 (2)

3、C++是一種面向?qū)ο蟮某绦蛟O(shè)計語言它使得程序的各個模塊的獨立性更強,程序的可讀性和可移植性更強,程序代碼的結(jié)構(gòu)更加合理,程序的擴充性更強。這對于設(shè)計、編制和調(diào)試一些大型的軟件尤為重要。 (3) C++集成環(huán)境不僅支持C++程序的編譯和調(diào)試,而且也支持C程序的編譯和調(diào)試。通常,C++程序環(huán)境 約定:當(dāng)源程序文件的擴展名為c.時,則為C程序;而當(dāng)源程序文件的擴展名為cpp.時,則為C++程序。 (4) C++語句非常簡練,對語法限制比較寬松,因此C++語法非常靈活。其優(yōu)點是給用戶編程帶來書寫上的方便。其缺點是由于編譯時對語法限制比較寬松,許多邏輯上的錯誤不容易發(fā)現(xiàn),給用戶編程增加了難度。

4、 3以下是詳盡的代碼 在C***Dlg添加下面代碼,這個自己一定要看懂,里面是各個按鈕的響應(yīng)函數(shù),不是叫你直接復(fù)制粘貼,而是一個個雙擊按鈕添加代碼,最后成了以下的樣式。 // text2Dlg.cpp : 實現(xiàn)文件 // #include "stdafx.h" #include "text2.h" #include "text2Dlg.h" #include "afxdialogex.h" #include"atlsimpstr.h" #ifdef _DEBUG #define new DEBUG_NEW #endif

5、// 用于應(yīng)用程序“關(guān)于”菜單項的 CAboutDlg 對話框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 對話框數(shù)據(jù) enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 實現(xiàn) protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() :

6、CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // Ctext2Dlg 對話框 Ctext2Dlg::Ctext2Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(Ctext2Dlg::IDD, pPare

7、nt) , m_strResult(_T("")) , OperatorPressed(false) , Restarted(false) , s(0) , m_Edit3(_T("")) , L(0) , L1(0) , PB(0) , radio(0) , m_strout(_T("")) , m_MM3(_T("")) , m_Inv(false) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void Ctext2Dlg::DoDataExchange(CDataEx

8、change* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_strResult); DDX_Text(pDX, IDC_EDIT3, m_Edit3); DDX_Text(pDX, IDC_MM3, m_MM3); } BEGIN_MESSAGE_MAP(Ctext2Dlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_0, &Ctext2Dl

9、g::OnBnClicked0) ON_BN_CLICKED(IDC_1, &Ctext2Dlg::OnBnClicked1) ON_BN_CLICKED(IDC_2, &Ctext2Dlg::OnBnClicked2) ON_BN_CLICKED(IDC_3, &Ctext2Dlg::OnBnClicked3) ON_BN_CLICKED(IDC_4, &Ctext2Dlg::OnBnClicked4) ON_BN_CLICKED(IDC_5, &Ctext2Dlg::OnBnClicked5) ON_BN_CLICKED(IDC_6, &Ctext2Dlg::OnB

10、nClicked6) ON_BN_CLICKED(IDC_7, &Ctext2Dlg::OnBnClicked7) ON_BN_CLICKED(IDC_8, &Ctext2Dlg::OnBnClicked8) ON_BN_CLICKED(IDC_9, &Ctext2Dlg::OnBnClicked9) ON_BN_CLICKED(IDC_POINT, &Ctext2Dlg::OnBnClickedPoint) ON_BN_CLICKED(IDC_ADD, &Ctext2Dlg::OnBnClickedAdd) ON_BN_CLICKED(IDC_SUB, &Ctext2

11、Dlg::OnBnClickedSub) ON_BN_CLICKED(IDC_mul, &Ctext2Dlg::OnBnClickedmul) ON_BN_CLICKED(IDC_DIV, &Ctext2Dlg::OnBnClickedDiv) ON_BN_CLICKED(IDC_EQUAL, &Ctext2Dlg::OnBnClickedEqual) ON_BN_CLICKED(IDC_BACKSPACE, &Ctext2Dlg::OnBnClickedBackspace) ON_BN_CLICKED(IDC_C, &Ctext2Dlg::OnBnClickedC)

12、ON_BN_CLICKED(IDC_SIN, &Ctext2Dlg::OnBnClickedSin) ON_BN_CLICKED(IDC_COS, &Ctext2Dlg::OnBnClickedCos) ON_BN_CLICKED(IDC_TAN, &Ctext2Dlg::OnBnClickedTan) ON_BN_CLICKED(IDC_SQRT, &Ctext2Dlg::OnBnClickedSqrt) ON_BN_CLICKED(IDC_LKOUHAO, &Ctext2Dlg::OnBnClickedLkouhao) ON_BN_CLICKED(IDC_RKOUHAO

13、, &Ctext2Dlg::OnBnClickedRkouhao) ON_BN_CLICKED(IDC_PI, &Ctext2Dlg::OnBnClickedPi) ON_BN_CLICKED(IDC_INT, &Ctext2Dlg::OnBnClickedInt) ON_BN_CLICKED(IDC_MOD, &Ctext2Dlg::OnBnClickedMod) ON_BN_CLICKED(IDC_CE, &Ctext2Dlg::OnBnClickedCe) ON_BN_CLICKED(IDC_DAOSHU, &Ctext2Dlg::OnBnClickedDaoshu)

14、 ON_BN_CLICKED(IDC_JIAJIAN, &Ctext2Dlg::OnBnClickedJiajian) ON_BN_CLICKED(IDC_N, &Ctext2Dlg::OnBnClickedN) ON_BN_CLICKED(IDC_SQUARE, &Ctext2Dlg::OnBnClickedSquare) ON_BN_CLICKED(IDC_CUBE, &Ctext2Dlg::OnBnClickedCube) ON_BN_CLICKED(IDC_TENX, &Ctext2Dlg::OnBnClickedTenx) ON_BN_CLICKED(IDC_

15、EXP, &Ctext2Dlg::OnBnClickedExp) ON_BN_CLICKED(IDC_LOG, &Ctext2Dlg::OnBnClickedLog) ON_BN_CLICKED(IDC_SINH, &Ctext2Dlg::OnBnClickedSinh) ON_BN_CLICKED(IDC_COSH, &Ctext2Dlg::OnBnClickedCosh) ON_BN_CLICKED(IDC_TANH, &Ctext2Dlg::OnBnClickedTanh) ON_BN_CLICKED(IDC_IN, &Ctext2Dlg::OnBnClickedIn

16、) ON_BN_CLICKED(IDC_XY, &Ctext2Dlg::OnBnClickedXy) ON_BN_CLICKED(IDC_KAILIFANG, &Ctext2Dlg::OnBnClickedKailifang) ON_BN_CLICKED(IDC_RADIO1, &Ctext2Dlg::OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, &Ctext2Dlg::OnBnClickedRadio2) ON_BN_CLICKED(IDC_FE, &Ctext2Dlg::OnBnClickedFe) ON_BN_CLICK

17、ED(IDC_YX, &Ctext2Dlg::OnBnClickedYx) ON_BN_CLICKED(IDC_INV, &Ctext2Dlg::OnBnClickedInv) ON_BN_CLICKED(IDC_MC, &Ctext2Dlg::OnBnClickedMc) ON_BN_CLICKED(IDC_MR, &Ctext2Dlg::OnBnClickedMr) ON_BN_CLICKED(IDC_MS, &Ctext2Dlg::OnBnClickedMs) ON_BN_CLICKED(IDC_MADD, &Ctext2Dlg::OnBnClickedMadd)

18、 ON_BN_CLICKED(IDC_MSUB, &Ctext2Dlg::OnBnClickedMsub) ON_BN_CLICKED(IDC_SIN2, &Ctext2Dlg::OnBnClickedSin2) ON_BN_CLICKED(IDC_COS2, &Ctext2Dlg::OnBnClickedCos2) ON_BN_CLICKED(IDC_TAN2, &Ctext2Dlg::OnBnClickedTan2) ON_BN_CLICKED(IDC_PI2, &Ctext2Dlg::OnBnClickedPi2) END_MESSAGE_MAP() // C

19、text2Dlg 消息處理程序 BOOL Ctext2Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 將“關(guān)于...”菜單項添加到系統(tǒng)菜單中。 // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) {

20、 BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 設(shè)置此對話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對

21、話框時,框架將自動 // 執(zhí)行此操作 SetIcon(m_hIcon, TRUE); // 設(shè)置大圖標(biāo) SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標(biāo) // TODO: 在此添加額外的初始化代碼 return TRUE; // 除非將焦點設(shè)置到控件,否則返回 TRUE } void Ctext2Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAb

22、out.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼 // 來繪制該圖標(biāo)。對于使用文檔/視圖模型的 MFC 應(yīng)用程序, // 這將由框架自動完成。 void Ctext2Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于繪制的設(shè)備上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast

23、(dc.GetSafeHdc()), 0); // 使圖標(biāo)在工作區(qū)矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 繪制圖標(biāo) dc.DrawIcon(x

24、, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //當(dāng)用戶拖動最小化窗口時系統(tǒng)調(diào)用此函數(shù)取得光標(biāo) //顯示。 HCURSOR Ctext2Dlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void Ctext2Dlg::OnBnClicked0() //以下1~9和“.”都是一個道理,在此寫一個說明一下 { UpdateData(TRUE); //把編輯框顯示的字符串傳給相應(yīng)的變量m

25、_strResult if(OperatorPressed==true||Restarted==true) //如果按下了"=","AC","sqrt","tan","sin"等按忸時, m_strResult="0"; //變量m_strResult的值為按下的按忸"0"(否則下面會出現(xiàn)03...的情況出現(xiàn)) else m_strResult+="0"; //在按下數(shù)字鍵的情況下,則在m_strResult后加"0" OperatorPressed=false;

26、 // OperatorPressed是bool型的變量 Restarted=false; // Restarted是bool型的變量 UpdateData(FALSE); //把字符串變量m_strResult傳給編輯框 } void Ctext2Dlg::OnBnClicked1() { UpdateData(TRUE); if(OperatorPressed==true||Restarted==true) m_strResult="1";

27、 else m_strResult+="1"; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClicked2() { UpdateData(TRUE); if(Operato

28、rPressed==true||Restarted==true) m_strResult="2"; else m_strResult+="2"; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClicked3() { UpdateData(TRUE);

29、 if(OperatorPressed==true||Restarted==true) m_strResult="3"; else m_strResult+="3"; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::O

30、nBnClicked4() { UpdateData(TRUE); if(OperatorPressed==true||Restarted==true) m_strResult="4"; else m_strResult+="4"; OperatorPressed=false; Restarted=false; UpdateData(FALSE);

31、 } void Ctext2Dlg::OnBnClicked5() { UpdateData(TRUE); if(OperatorPressed==true||Restarted==true) m_strResult="5"; else m_strResult+="5"; OperatorPressed=false; Restart

32、ed=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClicked6() { UpdateData(TRUE); if(OperatorPressed==true||Restarted==true) m_strResult="6"; else m_strResult+="6"; OperatorPres

33、sed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClicked7() { UpdateData(TRUE); if(OperatorPressed==true||Restarted==true) m_strResult="7"; else m_strResult+="

34、7"; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClicked8() { UpdateData(TRUE); if(OperatorPressed==true||Restarted==true) m_strResult="8"; else

35、 m_strResult+="8"; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClicked9() { UpdateData(TRUE); if(OperatorPressed==true||Restarted==true) m_strResult="9";

36、 else m_strResult+="9"; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClickedPoint() { UpdateData(TRUE); if(OperatorPressed==true||Re

37、started==true) m_strResult="."; else m_strResult+="."; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClickedAdd() //以下“- * /”都是一個道理,在此寫一個說明一下 { UpdateData(T

38、RUE); //把編輯框顯示的字符串傳給相應(yīng)的變量m_strResult m_strResult+="+"; //在變量m_strResult后加"+" OperatorPressed=false; Restarted=false; //把bool變量OperatorPressed和Restarted的值改為false UpdateData(FALSE); //把字符串變量m_strResult傳給編輯框 }

39、 void Ctext2Dlg::OnBnClickedSub() { UpdateData(TRUE); m_strResult+="-"; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClickedmul() { UpdateData(TRUE);

40、 m_strResult+="*"; OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClickedDiv() { UpdateData(TRUE); m_strResult+="/";

41、 OperatorPressed=false; Restarted=false; UpdateData(FALSE); } void Ctext2Dlg::OnBnClickedEqual() { UpdateData(TRUE); L1=true; int p=0,i=0,g[10]={0},k=0,j; for(;i

42、 j=p; g[j]=i; p++; } } for(;k

43、(_T("%1f"),a[0]); while(L==1) { MOD(m_strResult); L=0; } while(PB==E) { EXP10(m_strResult); PB=#; } while(PB==X) { Xy(m_strResult); PB=#; } while(PB==c) { SqrtMul(m_strResult); } ClearZero(m_Edit3); UpdateData(FALSE); OperatorPressed=true; } voi

44、d Ctext2Dlg::OnBnClickedBackspace() { UpdateData(TRUE); //把編輯框顯示的字符串傳給相應(yīng)的變量m_strResult if(m_strResult!="0"&&m_strResult.GetLength()>1) //判斷編輯框是否只剩下“0”或者是否有字符在編輯框上 m_strResult=m_strResult.Left(m_strResult.GetLength()-1); //把m_strResult左邊的數(shù)(長度已經(jīng)減一)重新賦給m_strResult else { Resta

45、rted=true; //把bool變量Restarted的值改為true m_strResult="0"; //變量m_strResult的值為按下的按忸"0" } UpdateData(FALSE);//把字符串變量m_strResult傳給編輯框 } void Ctext2Dlg::OnBnClickedC() { Restarted=true; //把bool變量Restarted的值改為true m_strResult="0"; //變量m_strResult的值為按下的按忸"0" UpdateData(FALSE);//把字符

46、串變量m_strResult傳給編輯框 } void Ctext2Dlg::OnBnClickedSin() //以下“cos tan sinh cosh tanh”都是一個道理,在此寫一個說明一下 { UpdateData(TRUE);//把編輯框顯示的字符串傳給相應(yīng)的變量m_strResult double result; //定義一個局部變量double型的result if(radio==1) //判斷是否按下度(這里還沒有設(shè)置梯度的消息命令響應(yīng)函數(shù)) result=sin(_wtof(m_strResult)*6.283185

47、3071795864769/360.0); //計算sin(度)的公式 else result=sin(_wtof(m_strResult));//計算sin(弧度)的公式 m_Edit3.Format(_T("%1f"),result);//將result的double型數(shù)據(jù)轉(zhuǎn)換成字符串,并傳遞給編輯框2的變量m_Edit3 ClearZero(m_Edit3); //清零 m_strResult=m_Edit3; //將編輯框2的變量m_Edit3上的字符串賦值給編輯框1的變量m_strResult OperatorPressed=true;

48、 //把bool變量OperatorPressed的值改為true UpdateData(FALSE); //把字符串變量m_strResult,m_Edit3傳給各自的編輯框 } void Ctext2Dlg::OnBnClickedCos() { UpdateData(TRUE); double result; if(radio==1) result=cos(_wtof(m_strResult)*6.2831853071795864769/360.0); else result=cos(_wtof(m_strResul

49、t)); m_Edit3.Format(_T("%1f"),result); ClearZero(m_Edit3); m_strResult=m_Edit3; OperatorPressed=true; UpdateData(FALSE); } void Ctext2Dlg::OnBnClickedTan() { UpdateData(TRUE); double result; if(radio==1) result=tan(_wtof(m_strResult)*6.2831853071795864769/360.0); el

50、se result=tan(_wtof(m_strResult)); m_Edit3.Format(_T("%1f"),result); ClearZero(m_Edit3); m_strResult=m_Edit3; OperatorPressed=true; UpdateData(FALSE); } void Ctext2Dlg::OnBnClickedSqrt() { UpdateData(TRUE); //把編輯框顯示的字符串傳給相應(yīng)的變量m_strResult double result; //定義一個局部變量

51、double型的result result=sqrt(_wtof(m_strResult));//計算sqrt m_Edit3.Format(_T("%1f"),result);//將result的double型數(shù)據(jù)轉(zhuǎn)換成字符串,并傳遞給編輯框2的變量m_Edit3 ClearZero(m_Edit3); //清零 OperatorPressed=true;//把bool變量OperatorPressed的值改為true UpdateData(FALSE);//把字符串變量m_Edit3傳給編輯框 } double Ctext2Dlg::Geta

52、Str(CString str) //這個函數(shù)的作用是將只有數(shù)字和.的字符串轉(zhuǎn)成double的數(shù)值,即相當(dāng)于_wtof()這個函數(shù) //這個函數(shù)也是自己添加 { int i=0; double rate=10.0,itemp=0.0; for(;i

53、 if(rate==10.0) //整數(shù)部分 itemp=itemp*rate+(str.GetAt(i)-0);//獲得整數(shù) else //小數(shù)部分 { itemp=itemp+rate*(str.GetAt(i)-0);//獲得小數(shù) rate=rate/10; //每次讓rate小10倍 } } else if(str.GetAt(i)==.)

54、 //如果str.GetAt(i)是小數(shù)點 rate=0.1; //讓rate=0.1,開始計算小數(shù)部分 } return (itemp); } void Ctext2Dlg::OnBnClickedLkouhao() { UpdateData(TRUE); //把編輯框顯示的字符串傳給相應(yīng)的變量m_strResult if(OperatorPressed==true||Restarted==true) m_strResult="(";

55、 //變量m_strResult的值為按下的按忸"(" else m_strResult+="("; //在按下數(shù)字鍵的情況下,則在m_strResult后加"(" OperatorPressed=false; Restarted=false; //把bool變量OperatorPressed和Restarted的值改為false UpdateData(FALSE); //把字符串變量m_strResul

56、t傳給編輯框 } void Ctext2Dlg::OnBnClickedRkouhao() { UpdateData(TRUE); if(OperatorPressed==true||Restarted==true) m_strResult=")"; else m_strResult+=")"; OperatorPressed=false; Restart

57、ed=false; UpdateData(FALSE); } void Ctext2Dlg::Bracket(CString str0,int *h)//這個代碼也是自己添加 { CString str1=_T(""),str2=_T(""),str3=_T(""); int i=0; for(;i

58、 //i自加一次,用來跳過左括號 for(;i

59、//把括號后邊的表達式賦給str3 } } else str1+=str0.GetAt(i); //把括號前邊的表達式賦給str3 } GetStr(str2); //調(diào)用GetStr(str2)函數(shù),把str2里的數(shù)字和運算符保存在數(shù)組中 GetResult(); //計算出表達式str2的值 for(i=0;i

60、=() //如果m_strResult中有括號 str2.Format(_T("%1f"),a[0]); //把a[0]轉(zhuǎn)化為字符串賦給str2 m_strResult=str1+str2+str3; //把str1,str2,str3的值加起來賦給m_strResult } void Ctext2Dlg::GetResult()//自己定義添加這個函數(shù),代碼如下 { int i=0,x=0,y=1,t=0,z=1; //這個循環(huán)的目的是把所有除法運算都改為乘法計算 for(i

61、=0;i<=s;i++) { if(b[i]==/) //當(dāng)循環(huán)遇到除號時 { a[i+1]=1/a[i+1]; //把a[i+1]的值改為1/a[i+1] b[i]=*; //把b[i]的值改為乘號 } } //這個循環(huán)可以對所有乘法進行計

62、算 for(i=0;i<=s;i++) { if(b[i]==*) //當(dāng)循環(huán)遇到乘號時 { //如果i-t==2(再上次循環(huán)中,t被賦值成了i,這次2個值只相差2,說明表達式的情況是連續(xù)乘法,比如2*3*4)以2*3*4為例,在這個條件之前,函數(shù)已經(jīng)進行了2*3的運算,其計算結(jié)果保存在原來的2中,把2的值覆蓋了,這個條件的作用是讓2*3的結(jié)果再和4相乘,結(jié)果保存在原來的2中 if(i-t==2)

63、 { a[t-z]=a[t-z]*a[i+1]; //進行乘法運算,把結(jié)果保存在前面的數(shù)組元素中 z=z+2; //這里引進變量z,可以解決很多數(shù)連續(xù)相乘的問題,比如2*2*2*2*2*2 } else a[i-1]=a[i-1]*a[i+1]; //碰到乘號后把乘號前后2個數(shù)字相乘,結(jié)果保存在前面的數(shù)組元素 a[i+1]=1000000.0;

64、 //對乘號后面的數(shù)字初始化為0.0 b[i]= ; //對乘號初始化為空格 //2數(shù)相乘后把乘號及其后面的數(shù)字初始化了,如果是2*3*4的情況,將會無法計算*4,所以要用開始的條件語句來解決 t=i; //把i的值賦給t } } //這個循環(huán)的目的是對數(shù)組a和b進行整理,因為已經(jīng)進行了乘法和除法運算,進行運算的時候,把一些數(shù)字和運算符初始化了這個函數(shù)的作用可以使中間一些初始化了的數(shù)字和符號被

65、后面的數(shù)字和符號代替,讓數(shù)組可以重新排列 for(i=0;i<=s;i++) { if(a[i]!=1000000.0) //如果a[i]的值不為0.0 { a[x]=a[i]; //把a[i]的值賦給a[x] x+=2; //x自加2 } if(b[i]!= )

66、 //如果b[i]的值不為空格 { b[y]=b[i]; //把b[i]的值賦給b[y] y=y+2; //y自加2 } } //這個循環(huán)是進行最后的加減法運算 for(i=0,x=2;i<=y-2;i++) //這里i的上限小于等于y-2,可以保證不進行多余的運算 { if(b[i]==+) //如果b[i]等于加號 { a[0]=a[0]+a[x]; x+=2; } //把加號后的數(shù)字和a[0]相加,結(jié)果保存在a[0]中 else if(b[i]==-)

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!