資源簡介
很好用的一款編譯器,比起vs,占得空間小多了
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
const?char?NUM[]?=?{‘0‘?‘1‘?‘2‘?‘3‘?‘4‘?‘5‘?‘6‘?‘7‘?‘8‘?‘9‘?‘.‘};
const?char?OPERATION[]?=?{‘+‘?‘-‘?‘*‘?‘/‘};
const?double?PI?=?3.14159265358979;
const?double?EE?=?2.71828182818281;
class?Fun?{?//處理系統(tǒng)數(shù)學(xué)函數(shù)的類
public:
????Fun(string?o?int?t?double?l?=?0.0?double?r?=?0.0):?op(o)?type(t)?lvalue(l)?rvalue(r)?{}
????static?string?FUN[];
????double?calc();
private:
????int?type;?//666?0?1?sin90?2?3!?3?3C2
????string?op;?//函數(shù)類型
????double?lvalue;?//函數(shù)左邊的值
????double?rvalue;?//函數(shù)右邊的值
????static?int?FunNum;
};
int?Fun::FunNum?=?10;
string?Fun::FUN[]?=?{“!“?“sin“?“cos“?“tan“?“l(fā)og“?“l(fā)n“?“C“?“A“?“^“?“-“};
/*
函數(shù)說明:
1:log是以10為底的工程對數(shù)
2:ln?是以e為底的自然對數(shù)
3:C?計算組合數(shù)?輸入規(guī)則?如計算?3取2的組合?輸入表達式?3C2
4:A?計算排列數(shù)?輸入規(guī)則?如計算?3取2的排列?輸入表達式?3A2
5:!?計算階乘
6:^?x的y次方?輸入?x^y
*/
int?factorial(int?n)?{?//階乘函數(shù)
????int?i?s?=?1;
????for(i?=?1;?i?<=?n;?i++)
????????s?*=?i;
????return?s;
}
int?C(int?a?int?b)?{
????return?factorial(a)?/?(factorial(b)?*?factorial(a?-?b));
}
int?A(int?a?int?b)?{
????return?factorial(a)?/?factorial(b);
}
double?Fun::calc()?{?//計算系統(tǒng)函數(shù)的值
????if(type?==?0)
????????return?lvalue;
????else?{
????????if(op?==?“!“)
????????????return?factorial(lvalue);
????????if(op?==?“sin“)
????????????return?sin(rvalue?/?180?*?PI);
????????if(op?==?“cos“)
????????????return?cos(rvalue?/?180?*?PI);
????????if(op?==?“tan“)
????????????return?tan(rvalue?/?180?*?PI);
????????if(op?==?“l(fā)og“)
????????????return?log10(rvalue);
????????if(op?==?“l(fā)n“)
????????????return?log10(rvalue)?/?log10(EE);
????????if(op?==?“C“)
????????????return?C(lvalue?rvalue);
????????if(op?==?“A“)
????????????return?A(lvalue?rvalue);
????????if(op?==?“^“)
????????????return?pow(lvalue?rvalue);
????????if(op?==?“-“)
????????????return?-rvalue;
????????else?{
????????????string?err?=?“暫時沒有函數(shù)“?+?op;
????????????MessageBox(NULL?err.c_str()?“錯誤“?MB_OK);
????????????return?0;
????????}
????}
}
struct?Unit?{?//雙向鏈表保存運算單元
????Unit(int?p?char?o?string?c?double?v?int?t?Unit?*?pr?=?NULL?Unit?*?n?=?NULL)
????????:?PRI(p)?Operation(o)?Code(c)?value(v)?Type(t)?Pre(pr)?Next(n)?{}
????int?PRI;?//優(yōu)先級
????char?Operation;?//操作符
????string?Code;?//原始代碼
????double?value;?//數(shù)據(jù)
????int?Type;?//類型?操作符0?數(shù)據(jù)1?函數(shù)2
????Unit?*?Pre;?//構(gòu)成雙向鏈表
????Unit?*?Next;
};
class?Node?{?//表達式樹狀結(jié)構(gòu)的節(jié)點
public:
????Node(char?o?int?p?int?e?=?1?double?v?=?0?Node?*?ph?=?NULL?Node?*?pl?=?NULL?Node?*?pr?=?NULL)
????????:?Operation(o)?PRI(p)?expression(e)?value(v)?Head(ph)?Left(pl)?Right(pr)?{}
????Node?*?Head;?//節(jié)點的根左樹枝右樹枝
????Node?*?Left;
????Node?*?Right;
????double?GetValue();
????char?GetOperation()?const?{
????????return?Operation;
????}
????int?GetPri()?const?{
????????return?PRI;
????}
????int?IsExp()?const?{
????????return?expression;
????}
private:
????char?Operat
- 上一篇:VS2010 MFC讀寫文件
- 下一篇:C++虛擬數(shù)字鍵盤 源代碼 可擴展
評論
共有 條評論