C 四則計算器原始碼

2021-06-19 03:46:01 字數 1350 閱讀 9168

#include #include #include using namespace std;

const int inf=1000;

//排程場演算法 中綴表示式轉字尾表示式

template queue& dispatch(pairinfix,long size)else if(infix[i].second!=inf)else if(infix[i].second>operators.top().second)else while (!operators.empty()&&infix[i].second<=operators.top().second);

operators.push(infix[i]);}}

}while(!operators.empty())

return *result;

}//建立帶有優先順序的操作符pair

pair* init_infix_pair(vectorinfix,long size)

else if(infix[i]==")")

else if(infix[i]=="*"||infix[i]=="/")else if(infix[i]=="+"||infix[i]=="-")

opers[i]=oper;

}return opers;

}//把字串轉換成字串陣列,以運算子作為分隔符,可以處理小數點

vector& convert_string_to_array(string exp)

}else

else}}

return *vec;

}//構建乙個vector,元素為pair,first標識是數字還是運算子,second為具體內容

vector< pair>& convert_queue_to_vector(queueresult)

vec->push_back(pair(false,atof(result.front().c_str())));

result.pop();

}return *vec;

}//利用棧計算字尾表示式

double caculate_string_vector(vector> vec)

cout<* ps=init_infix_pair(vec,vec.size());

queue& result=dispatch(ps,vec.size());

vector< pair>& final=convert_queue_to_vector(result);

cout<< caculate_string_vector(final)

cout

}

C 實現計算器(四則混合運算)

計算器是帶括號的四則運算實際上利用的是棧後進先出的原則 轉換思想 入棧push int pop1 stack1 s,float ch 出棧 typedef struct stack2 void initstack2 stack2 s int push2 stack2 s,char ch 入棧push...

python 計算器 四則運算

學習來自 感謝!思路 考慮的四則運算符號 獲取表示式字串 表示式切分 請注意區分 減號 與負號 先出初切 formula list i for i in re.split d d formula if i 然後再判定 if re.search final formula 1 其他正常切分就行 ite...

四則運算計算器

今天做個帶視窗的c 四則運算計算器 輸入中綴表示式 自然表示式 可以用list來放 先把它變成字尾表示式 逆波蘭表示式 用乙個棧放運算子,另乙個棧放字尾表示式 運算子優先順序 1 2 3 4 從左到右遍歷中綴表示式 計算字尾表示式 從左到右掃瞄字尾表示式,如果是數字,放入數字棧。如果是符號,從數字棧...