国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

c++表達式求值

這篇具有很好參考價值的文章主要介紹了c++表達式求值。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

給定一個表達式,其中運算符僅包含 +,-,,/(加 減 乘 整除),可能包含括號,請你求出表達式的最終值。
注意:
數(shù)據(jù)保證給定的表達式合法。題目保證符號 - 只作為減號出現(xiàn),不會作為負號出現(xiàn),例如,-1+2,(2+2)(-(1+1)+2) 之類表達式均不會出現(xiàn)。題目保表達式中所有數(shù)字均為正整數(shù)。題目保證表達式在中間計算過程以及結(jié)果中,均不超過 231?1。題目中的整除是指向 0 取整,也就是說對于大于 的結(jié)果向下取整,例如 5/3=1,對于小于 0 的結(jié)果向上取整,例5/(1?4)=?1。
C++和Java中的整除默認是向零取整;Python中的整除//默認向下取整,因此Python的eval()函數(shù)中的整除也是向下取整,在本題中不能直接使用。

輸入格式
共一行,為給定表達式。

輸出格式
共一行,為表達式的結(jié)果。

數(shù)據(jù)范圍
表達式的長度不超過 105。

輸入樣例:
(2+2)*(1+1)

輸出樣例:
8文章來源地址http://www.zghlxwxcb.cn/news/detail-811977.html

#include<iostream>
#include<stack>
#include<unordered_map>
using namespace std;
stack<int> num; //存儲操作數(shù)
stack<char> op; //存儲操作符
void opera()
{
    int a=num.top();num.pop(); //每取出一個操作符或操作數(shù),出棧
    int b=num.top();num.pop();
    char c=op.top();op.pop();
    if(c=='+') num.push(a+b);
    else if(c=='-') num.push(b-a); //注意先出棧的為減數(shù)、除數(shù)
    else if(c=='*') num.push(a*b);
    else num.push(b/a);
}
int main()
{
    string s;
    cin>>s;
    unordered_map<char,int> option={{'+',1},{'-',1},{'*',2},{'/',2}};
    for(int i=0;i<s.size();i++)
    {
        if(isdigit(s[i]))  //如果是s[i]為數(shù),入棧
        {
            int j=i,x=0;
            while(j<s.size()&&isdigit(s[j]))
                x=x*10+s[j++]-'0';
            num.push(x);
            i=j-1;
        }
        else if(s[i]=='(') op.push(s[i]);
        else if(s[i]==')')
        {
            while(op.top()!='(') opera();
            op.pop();
        }
        else
        {
            while(op.size()&&op.top()!='('&&option[op.top()]>=option[s[i]])
                opera();
            op.push(s[i]);
        }
    }
    while(op.size()) opera();
    cout<<num.top();
    return 0;
}

到了這里,關(guān)于c++表達式求值的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu) | 棧的中綴表達式求值

    數(shù)據(jù)結(jié)構(gòu) | 棧的中綴表達式求值

    目錄 什么是棧? 棧的基本操作 入棧操作 出棧操作 取棧頂元素 中綴表達式求值 實現(xiàn)思路 具體代碼 棧是一種線性數(shù)據(jù)結(jié)構(gòu),具有“先進后出”(Last In First Out, LIFO)的特點。它可以看作是一種受限的線性表,只能在表的一端進行插入和刪除操作,這一端被稱為棧頂,另一端

    2024年02月02日
    瀏覽(25)
  • c++表達式求值

    給定一個表達式,其中運算符僅包含 +,-, ,/(加 減 乘 整除),可能包含括號,請你求出表達式的最終值。 注意: 數(shù)據(jù)保證給定的表達式合法。題目保證符號 - 只作為減號出現(xiàn),不會作為負號出現(xiàn),例如,-1+2,(2+2) (-(1+1)+2) 之類表達式均不會出現(xiàn)。題目保表達式中所有數(shù)字均

    2024年01月21日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)課程實驗二:運用棧實現(xiàn)表達式求值

    目錄 一、實驗?zāi)康?二、實驗內(nèi)容 三、實驗提示? 四、實驗思路

    2023年04月17日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】你知道波蘭表達式和逆波蘭表達式嗎?我才知道原來棧在表達式求值中還能這樣使用……

    【數(shù)據(jù)結(jié)構(gòu)】你知道波蘭表達式和逆波蘭表達式嗎?我才知道原來棧在表達式求值中還能這樣使用……

    大家好,很高興又和大家見面啦?。。?在前面的內(nèi)容中我們詳細介紹了棧的第一種應(yīng)用——在括號匹配問題中的應(yīng)用,如果還沒有閱讀過的朋友可以回看前面兩篇文章。在今天的內(nèi)容中我們將介紹棧的另一種應(yīng)用——在表達式求值中的應(yīng)用。 表達式相信大家應(yīng)該不陌生了,

    2024年04月27日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達式求值

    數(shù)據(jù)結(jié)構(gòu)與算法-(7)---棧的應(yīng)用-(4)后綴表達式求值

    ??write in front?? ??大家好,我是Aileen??.希望你看完之后,能對你有所幫助,不足請指正!共同學(xué)習(xí)交流. ??本文由Aileen_0v0?? 原創(chuàng) CSDN首發(fā)?? 如需轉(zhuǎn)載還請通知?? ??個人主頁:Aileen_0v0??—CSDN博客 ??歡迎各位→點贊?? + 收藏?? + 留言??? ??系列專欄:Aileen_0v0??

    2024年02月07日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)——基于二叉樹的表達式求值算法

    數(shù)據(jù)結(jié)構(gòu)——基于二叉樹的表達式求值算法

    1.輸入一個表達式(表達式中的數(shù)均小于10的正整數(shù)),利用二叉樹來表示該表達式,創(chuàng)建表達式數(shù),然后利用二叉樹的遍歷操作求表達式的值。 2.輸入要求:多組數(shù)據(jù),每組數(shù)據(jù)1行,為一個表達式,表達式以“=”結(jié)尾。當(dāng)輸入只有一個“=”時,輸入結(jié)束。 3.輸出要求:每組

    2024年02月04日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)】【棧(stack)應(yīng)用】四則運算表達式求值(帶括號)

    【數(shù)據(jù)結(jié)構(gòu)】【棧(stack)應(yīng)用】四則運算表達式求值(帶括號)

    ????????先理解原理,再看代碼,注意標(biāo)紅字體很重要!結(jié)尾附完整測試代碼,C語言實現(xiàn)! 更新留言: ? ? ? ? 本來是側(cè)重演示棧結(jié)構(gòu)的使用,后面評論區(qū)發(fā)現(xiàn)很多朋友對這個四則運算比較感興趣,特此做了更新,新增了對負數(shù)的運算支持。 ? ? ? ? 若您也有新的想法

    2024年02月08日
    瀏覽(14)
  • 【leetcode C++】逆波蘭表達式求值

    給你一個字符串?dāng)?shù)組 tokens ,表示一個根據(jù) 逆波蘭表示法 表示的算術(shù)表達式。 請你計算該表達式。返回一個表示表達式值的整數(shù)。 注意: 有效的算符為 \\\'+\\\'、\\\'-\\\'、\\\'*\\\' 和 \\\'/\\\' 。 每個操作數(shù)(運算對象)都可以是一個整數(shù)或者另一個表達式。 兩個整數(shù)之間的除法總是 向零截斷

    2024年03月16日
    瀏覽(48)
  • C語言-用棧實現(xiàn)表達式求值

    C語言-用棧實現(xiàn)表達式求值

    目錄 目的描述: 算法的基本思想: 錯誤點: 完整代碼: 1.輸入輸出 2.棧操作函數(shù)包(數(shù)組堆棧.h) 3.實現(xiàn)表達式求值函數(shù)包(表達式求值.c) 4.測試輸出: 算符優(yōu)先算法要實現(xiàn)的是,根據(jù)運算優(yōu)先關(guān)系來對一個表達式求值,假如說要計算: 4+2*3-10/5 運算的順序例如: 4+ 2*

    2023年04月10日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)】【棧(stack)應(yīng)用】四則運算表達式求值(支持括號、負數(shù))

    【數(shù)據(jù)結(jié)構(gòu)】【棧(stack)應(yīng)用】四則運算表達式求值(支持括號、負數(shù))

    ????????先理解原理,再看代碼,注意標(biāo)紅字體很重要!結(jié)尾附完整測試代碼,C語言實現(xiàn)! 更新留言: ? ? ? ? 本來是側(cè)重演示棧結(jié)構(gòu)的使用,后面評論區(qū)發(fā)現(xiàn)很多朋友對這個四則運算比較感興趣,特此做了更新,新增了對負數(shù)的運算支持。 ? ? ? ? 若您也有新的想法

    2024年02月05日
    瀏覽(54)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包