С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Вычислить значение выражения с учетом приоритета выполнения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шифрование ГОСТА28147-89 http://www.cyberforum.ru/cpp-beginners/thread569862.html
string k="hhhh", k1="kjhg"; string str=k xor k1; // это получается какая-то 4 байтовая абракадабра вроде ♥☺♣ подскажите пожалуста как из полученой абракадабры получить 8 4-ех битные...
C++ Ошибка преобразования типа Задача состояла в следующем: реализация алгоритма проверки n на простоту, используя малую теорему Ферма. В силу недостаточного опыта и позднего времени накумекал следующий код с пояснениями: В... http://www.cyberforum.ru/cpp-beginners/thread569858.html
Строковый класс C++
Ребят, помогите решить пожалуйста... Написать программу для работы с строковым классом. В классе предусмотреть все основные операции со строками. Поля и методы класса: Переменная strs -...
C++ Передача массивов в функцию
Помогите с программой пожалуйста!! Конец года, горю.. 1)Вычислить с использованием функции max элементы каждой строки матрицы A(10,20). Результаты формировать в одномерных массивах C(10) и D(10)....
C++ Имя массива как указатель http://www.cyberforum.ru/cpp-beginners/thread569820.html
Помогите с программой пожалуйста!! Конец года, горю.. Используя имя массива как указатель, и применяя адресную арифметику выполнить задание. 13. Дан одномерный массив, состоящий из N целочисленных...
C++ В последовательности чисел выдать на печать TRUE В последовательности чисел выдать на печать TRUE, если значение максимального числа больше числа 10. подробнее

Показать сообщение отдельно
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.05.2012, 03:31
только для целых чисел, без унарного минуса(плюса) и без скобок И только для правильных выражений
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <sstream>
#include <string>
#include <cctype>
#include <stack>
 
int main()
{
    std::string str;
    while (std:: cout << ">>> " && std::getline(std::cin, str))
    {
        std::istringstream iss(str);
        std::stack<int> nums;
        std::stack<char> ops;
        char c;
        int tmp;
 
        while (iss >> c)
        {    
            if (std::isdigit(c))
            {
                iss.putback(c);
                iss >> tmp;
                nums.push(tmp);
            }
            else
            {
                if (ops.empty() || (ops.top() != '*' && ops.top() != '/'))
                {
                    ops.push(c);
                    continue;
                }
 
                tmp = nums.top(), nums.pop();
                if (ops.top() == '*')
                    nums.top() *= tmp;
                else
                    nums.top() /= tmp;
                ops.pop(), ops.push(c);
            }
        }
 
        while (!ops.empty())
        {
            tmp = nums.top(), nums.pop();
            switch (ops.top())
            {
            case '+': nums.top() += tmp; break;
            case '-': nums.top() -= tmp; break;
            case '*': nums.top() *= tmp; break;
            case '/': nums.top() /= tmp; break;
            }
            ops.pop();
        }
 
        std::cout << nums.top() << std::endl;
    }
}
Добавлено через 1 минуту
и без проверки деления на ноль естественно

Цитата Сообщение от CG Посмотреть сообщение
Мой исходник, но я никак не пойму, как расставить приоритеты!!!ХЕЛП!!
для построения ПОЛИЗ приоритеты:
+ и - : 0
* и / : 1
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.