Форум программистов, компьютерный форум CyberForum.ru

Вычислить значение выражения с учетом приоритета выполнения - 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-ех битные символы(желательно типа int)
C++ Ошибка преобразования типа Задача состояла в следующем: реализация алгоритма проверки n на простоту, используя малую теорему Ферма. В силу недостаточного опыта и позднего времени накумекал следующий код с пояснениями: В качестве 1 из параметров, передаваемых функциям, выступает маркер простоты. Это параметр-ссылка на переменную логического типа. Значение маркера = true после выполнения подтверждает простоту... http://www.cyberforum.ru/cpp-beginners/thread569858.html
Строковый класс C++
Ребят, помогите решить пожалуйста... Написать программу для работы с строковым классом. В классе предусмотреть все основные операции со строками. Поля и методы класса: Переменная strs - определяет обрабатываемую строку. Конструктор contrings(); - вызывается при создании объекта и выполняет инициализацию массива strs путём занесения в strs символа конца строки. Функции: конкатенация,...
C++ Передача массивов в функцию
Помогите с программой пожалуйста!! Конец года, горю.. 1)Вычислить с использованием функции max элементы каждой строки матрицы A(10,20). Результаты формировать в одномерных массивах C(10) и D(10). 2)Определить функции, выполняющие действия в соответствии с вариантом задания. 13. Дан одномерный массив, состоящий из N вещественных элементов. 13.1. Найти максимальный элемент. 13.2. Вычислить...
C++ Имя массива как указатель http://www.cyberforum.ru/cpp-beginners/thread569820.html
Помогите с программой пожалуйста!! Конец года, горю.. Используя имя массива как указатель, и применяя адресную арифметику выполнить задание. 13. Дан одномерный массив, состоящий из N целочисленных элементов. 13.1. Ввести массив с клавиатуры. 13.2. Найти максимальный элемент. 13.3. Вычислить среднее арифметическое отрицательных элементов массива. 13.4. Вывести элементы на экран в обратном...
C++ В последовательности чисел выдать на печать TRUE В последовательности чисел выдать на печать TRUE, если значение максимального числа больше числа 10. подробнее

Показать сообщение отдельно
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 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
 
Текущее время: 06:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru