#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 從左到右遍歷中綴表示式 計算字尾表示式 從左到右掃瞄字尾表示式,如果是數字,放入數字棧。如果是符號,從數字棧...