計算器之C 簡易實現

2021-07-24 20:52:03 字數 2582 閱讀 4861

利用完成算術表示式求值: 從鍵盤或檔案中輸入算術表示式,計算其結果並顯示。 (1)轉換為字尾表示式並輸出;

(2)對字尾表示式求值並輸出。

輸入的表示式中可以有整數、實數、括號,運算子包括+、-、*、/、#(代表單目負)。可以多次輸入不同的表示式進行計算,直到使用者選擇「退出」。

對於以上該計算器,我們可以先使用乙個棧暫時儲存操作符,最後用乙個陣列來儲存字尾表示式;之後根據字尾表示式利用棧計算即可得到最終的答案。ok,上**:

/**

* p_calc.h: 類的設計主要為內部介面函式的宣告

*/#ifndef _p_calc_h_

#define _p_calc_h_

#include

#include

#include

#include

#include //isdigit()

#include //atof()

using

namespace

std;

class calc

// 用來判斷字尾表示式是否能夠成功轉化

bool to_postfixexpression ();

// 計算

double pcalc();

double pcalc(double left, double right, char optr);

// 判斷是否是操作符:'+'、'-'、'*'、'/'

bool isp_optr(char c);

// 優先順序判斷

bool isp_notlow(char a, char b);

private:

string opers;

vector

pev;

};#endif // _p_calc_h_

/**

* p_calc.cpp: 標頭檔案中的介面的實現

*/#include "p_calc.h"

//轉化為字尾表示式

bool calc::to_postfixexpression ()

if(i < length && opers[i] == '.')

}pev.push_back(opers.substr(j, i-j));

//cout << "數字子串:" << opers.substr(j, i-j) << " j is: " << j << " i is: " << i << endl;

}else

if (isp_optr(opers[i]))

while (!pes.empty() && (isp_notlow(pes.top(), opers[i])))

pes.push(opers[i++]);

}else

if (opers[i] == '(')

else

if (opers[i] == ')')

pes.pop();

i++;

//cout << "i is: " << i << " ";

}else

if (opers[i] == '#')

}while (!pes.empty())

vector

:: iterator it;

cout

<< endl;

for (it = pev.begin(); it != pev.end(); it++)

cout

<< *it << " ";

cout

<< endl << endl;

return

true;

}利用字尾表示式來計算值

double calc::pcalc()

else

if ( *it == "#" )

}double final_answer = pcalcs.top(); pcalcs.pop();

if (pcalcs.empty())

return final_answer;

else

return0;}

double calc::pcalc(double left, double right, char optr)

return answer;

}bool calc::isp_optr(char c)

bool calc::isp_notlow(char a, char b)

/**

* main.cpp: 測試程式

*/#include

#include "p_calc.h"

using

namespace

std;

int main()

return

0;}

1.2+3.4*(5.6-7.8)/0.9

1.2 3.4 5.6 7.8 - * 0.9 / +

final answer is: -7.11111

ok, 以上完 :)

C 實現簡易計算器

include include include define fin cin define fo using namespace std bool isoperator char x int getpriority char x bool isbracket char x int dooperate...

實現簡易計算器

python 剛學python 老師帶著寫了乙個計算器。話不多說直接上 from tkinter import 匯入模組 top tk 設定視窗物件 top.title 計算器 設定視窗標題 v strin ar 接受使用者輸入的字元 v.set 0 設定字元預設值 isopera false 是否...

計算器簡易實現

testdlg.cpp 實現檔案 include stdafx.h include include test.h include testdlg.h include afxdialogex.h ifdef debug define new debug new endif define tag add...