Строки

Sweet_

Помогите пожалуйста!!!! Дана строка, изображающая арифметическое выражение вида «<цифра>±<цифра>±…±<цифра>», где на месте знака операции «±» находится символ «+» или «–» (например, «4+7–2–8»). Вывести значение данного выражения (целое число).
2 ответа

Sweet_

Разбираешь выражение И вычисляешь его значение ...


Sweet_

//Дана строка, изображающая арифметическое выражение
//вида «<цифра>±<цифра>±…±<цифра>», где на месте знака операции «±»
//находится символ «+» или «–» (например, «4+7–2–8»).
//Вывести значение данного выражения (целое число).
#include <string>
#include <deque>
#include <cctype>
#include <iostream>
 
int calculate_string(const std::string s)
{
    int  res  = 0;    
    int  sign = 1;
    std::deque<char> d(s.begin(), s.end());
    while(!d.empty())
    {
        if(isdigit(d.front()))
        {
            res += sign * (d.front() - '0');
            d.pop_front();
            if(d.empty()) break;
            if(d.front() == '+')
            {
                sign = 1;
                d.pop_front();
            }
            else if(d.front() == '-')
            {
                sign = -1;
                d.pop_front();            
            }
            else d.clear();
        }
        else break;
    }//while
    return res;
}
 
int main()
{
    std::string s;
    for(;;)
    {
        std::cout << "input s: ";    
        std::cin >> s;
        std::cout << "Sum = "
                  << calculate_string(s)
                  << std::endl
                  << std::endl;
    }
    return 0;
}