奇怪的表達(dá)式求值

問(wèn)題描述

常規(guī)的表達(dá)式求值,我們都會(huì)根據(jù)計(jì)算的優(yōu)先級(jí)來(lái)計(jì)算。比如*/的優(yōu)先級(jí)就高于+-。但是小易所生活的世界的表達(dá)式規(guī)則很簡(jiǎn)單,從左往右依次計(jì)算即可,而且小易所在的世界沒(méi)有除法,意味著表達(dá)式中沒(méi)有/,只有(+, - 和 *)?,F(xiàn)在給出一個(gè)表達(dá)式,需要你幫忙計(jì)算出小易所在的世界這個(gè)表達(dá)式的值為多少

輸入描述

輸入為一行字符串,即一個(gè)表達(dá)式。其中運(yùn)算符只有-,+,*。參與計(jì)算的數(shù)字只有0~9.
保證表達(dá)式都是合法的,排列規(guī)則如樣例所示。

輸出描述

輸出一個(gè)數(shù),即表達(dá)式的值

輸入例子

3+5*7

輸出例子

56

分析

表達(dá)式只支持+ - *,沒(méi)有括號(hào),而且運(yùn)算符沒(méi)有優(yōu)先級(jí),只是按照從左到右的順序運(yùn)算。通過(guò)觀察發(fā)現(xiàn),表達(dá)式的正則表達(dá)式結(jié)構(gòu)必然是(digit op digit)+,即數(shù)字和運(yùn)算符是交替出現(xiàn)的。這樣一來(lái)計(jì)算就變得很簡(jiǎn)單了。

note

有運(yùn)算符優(yōu)先級(jí)和括號(hào)的復(fù)雜表達(dá)式的求解,需要用到棧。會(huì)牽涉到編譯理論的相關(guān)知識(shí)。

代碼

#include <cstdio>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    string str;
    getline(cin, str);

    int ret = str[0] - '0';
    for (int i = 1; i < str.size(); i += 2)
    {
        char c = str[i];
        int val = str[i + 1] - '0';

        switch (c)
        {
        case '+':
            ret += val;
            break;
        case '-':
            ret -= val;
            break;
        case '*':
            ret *= val;
            break;
        }
    }

    printf("%d\n", ret);

    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 常規(guī)的表達(dá)式求值,我們都會(huì)根據(jù)計(jì)算的優(yōu)先級(jí)來(lái)計(jì)算。比如*/的優(yōu)先級(jí)就高于+-。但是小易所生活的世界的表達(dá)式規(guī)則很簡(jiǎn)...
    六尺帳篷閱讀 264評(píng)論 0 1
  • 在某些情況下,我們需要對(duì)輸入字符串表達(dá)式進(jìn)行計(jì)算,例如一個(gè)字符串為:“1 + 2 * 3”,我們需要計(jì)算出它的結(jié)果...
    酸菜Amour閱讀 1,592評(píng)論 0 6
  • ?1 C語(yǔ)言程序的結(jié)構(gòu)認(rèn)識(shí) 用一個(gè)簡(jiǎn)單的c程序例子,介紹c語(yǔ)言的基本構(gòu)成、格式、以及良好的書寫風(fēng)格,使讀者對(duì)c語(yǔ)...
    CONLYOUC閱讀 8,873評(píng)論 9 66
  • 表達(dá)式和運(yùn)算符 程序中最簡(jiǎn)單的表達(dá)式就是,程序中的常量 變量名也是一種簡(jiǎn)單的表達(dá)式 復(fù)雜的表達(dá)式是由簡(jiǎn)單的表達(dá)式組...
    zhaolion閱讀 1,725評(píng)論 3 12
  • 不知道看到這個(gè)題目的你們會(huì)立刻想到誰(shuí)呢,每個(gè)人都會(huì)有自己的答案吧。那就隨著我,聽(tīng)聽(tīng)我的故事吧。那次聽(tīng)的那...
    瑾瑾陌閱讀 344評(píng)論 2 1

友情鏈接更多精彩內(nèi)容