首先祝賀我會插入源**了。。汗。。原來都不知道還有這個功能。。
然後是我今天實現的calculator類。。分享一下,基於c++程式語言第六章的計算器程式。計算器使用「遞迴下降」的演算法(一種流行的直截了當的自頂向下技術),按照表示式-》子表示式-》項 這一順序遞迴向下求值。然後首先項會返回這個項的型別,為數字、符號、變數等(列舉token_value描述項的型別),接著將項向上返回給字表示式求值,最後字表示式的求值結果被用於整個表示式的最終結果求值中。除了核心演算法的實現,我還新增了乙個輸入流指標istream*和輸入和輸出函式,使計算器可以分別從cin、命令列引數或程式裡的字串輸入,以及輸出到檔案中。這裡,字串和命引數將被儲存至乙個istringstream流,該類是istream的派生類,將用輸入流指標指向這個字串輸入流,讀取輸入。新增了乙個異常類error,繼承自標準庫logic_error類(其實就是用logic_error實現的),以丟擲計算過程中的邏輯錯誤。至此,這個計算器類已經相當完整了。
calculator.h
#ifndef calculator_h
#define calculator_h
#include #include #include #include #include #include class calculator
}; enum token_value;
calculator(const std::string& s):
input(new std::istringstream(s)),curr_tok(print)
calculator(std::istream& is):input(&is),curr_tok(print)
void output(std::ostream&);
private:
double expr(bool);
double term(bool);
double prim(bool);
token_value get_token();
std::istream* input;
std::maptable;
token_value curr_tok;
double number_value;
std::string string_value;
};void calculator::output(std::ostream& os)
while(ch!='\n'&&isspace(ch));
switch(ch)
curr_tok=print;
throw error("bad token"); }}
#endif
main.cpp
定義calculator類
#include #include #include "calculator.h"
int main(int argc,char* argv)
catch(calculator::error e){
std::cout<
製作網頁版簡易計算器(Calculator)
網頁版計算器的製作比想象中要來的容易,介面上只需固定計算器面板的寬高和按鈕的寬高即可。如果點了ac,就把字串content清空,也把輸出框清空。如果點了ce,把字串content清掉最後乙個字元,並把輸出框的值設定為content的值。如果點了 就將計算結果顯示在輸出框,並將content清空。敲黑...
c 算式 計算器 用C 編寫計算器
零有點問題,而且目前只能做一些簡單的運算,平方 開根號 希望有大佬指正我的錯誤 感謝using system using system.collections.generic using system.componentmodel using system.data using system.dra...
日期類 日期計算器
想要完成日期計算器其實只要考慮完成兩個工作就可以了 實現第乙個工作時,如果是減去乙個天數,例如 給定2017 7 10 與減去乙個天數不同的加乙個天數 即多少天以後 需要向當前月份的下乙個月借天數減去目標天數來滿足年月日合法。加減乙個目標天數的實現思路個方法是一樣的。個中細節請參考 中的注釋。實現第...