Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как правильно обратиться к элементам полиморфного вектора (с умным указателем)? Здравствуйте, по заданию нужно: создать абстрактный класс с функцией - норма, определить функцию для производных классов, создать в основной программе массив полиморфных объектов с виртуальной... https://www.cyberforum.ru/ cpp-beginners/ thread2493910.html Работа с файлами C++
В общем и целом у меня есть задача в тексте есть как это не странно текст и надпись,например - link "namefile.txt", мне нужно взять из этого файла текст записать вместо этой надписи (link...
C++ Не открывается файл при запуске программы через .exe Программа должна открывать файл и, при запуске программы через ctrl+f5 (программирую в Visual Studio) файл открывается нормально, но если запускать программу с помощью .exe файла, то открыть файл не... https://www.cyberforum.ru/ cpp-beginners/ thread2493894.html C++ Найти НОД для четырёх натуральных чисел https://www.cyberforum.ru/ cpp-beginners/ thread2493879.html
Помогите пожалуйста. Задача: Найти НОД для четырёх данных натуральных чисел. Числа должны вводится с клавиатуры. В С++. Заранее спасибо)
C++ Ввести строку. Вывести количество шагов чтобы найти заданное слово
Дано слово с более 7 и менее 256 заглавных латинских букв. на каждом шаге из слова можно удалить букву или несколько стоячих рядом букв. Напишите программу, которая находит наименьшее количество...
C++ Как использовать этот код? https://www.cyberforum.ru/ cpp-beginners/ thread2493831.html
Привет всем новичкам и экспертам в С++ (экспертам в особенности :p )! Я совсем не разбираюсь в С++, но я занимаюсь моддингом одной старой игры и местами знания в С++ там необходимы. Для решения моей...
C++ Создание масивов unsigned char buffer; evt_le_meta_event* meta = (evt_le_meta_event*)(buffer + HCI_EVENT_HDR_SIZE + 1); что этот кусок код делает? точнее на что будет указывать meta? на hci_event_hdr_size+1-нный... https://www.cyberforum.ru/ cpp-beginners/ thread2493830.html Лаунчер для игры с UDP C++
Здравствуйте! У вас есть на примете ХОРОШИЙ лаунчер, с открытым кодом, с возможностью обмена файлами по UDP? По типу того, что у Гайдзин(War thunder).
C++ Отличие std::move от & ? Здравствуйте, Подскажите пожалуйста, никак не могу понять, чем принципиально отличается std::move от & ? То есть и то и то вроде как ппредача некой ссылки на обьект, а не создание копии... https://www.cyberforum.ru/ cpp-beginners/ thread2493754.html C++ Как адекватно задержать консоль в С++ Sublime Text? https://www.cyberforum.ru/ cpp-beginners/ thread2493729.html
Всем привет! Решил недавно прикрутить к Sublime Text 3, возможность компиляции файлов .сpp c помощью MinGW. Действовал по этой инструкции: www.cyberforum.ru/blogs/390663/blog1982.html И, все...
Программа падает на операторе delete C++
#include <iostream> int main() { int temp = 8; int* p = &temp; delete p;
C++ Совместное владение Подскажите, можно ли реализовать так называемое совместное владение. Допустим я создаю сложносвязную структуру, которая содержит указатели на родителя, брата, второго брата и так далее, и когда... https://www.cyberforum.ru/ cpp-beginners/ thread2493666.html
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
25.08.2019, 09:17 0

Калькулятор с новыми операциями - C++ - Ответ 13789265

25.08.2019, 09:17. Показов 2938. Ответов 11
Метки (Все метки)

Лучший ответ Сообщение было отмечено cleanbrain как решение

Решение

Не решение, а пища для размышлений
1. Преобразуем строку (Обратная польская запись)
2. Работа со стеком

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <string.h> 
#include <stack>
#include <sstream>
 
using namespace std;
 
int priority_operations(char c){ //приоритет операций
    if (c == '#'){
        return 3;
    }
    else if (c == '~') {
        return 2;
    }
    else {
        return -1;
    }
}
 
string infixToPostfix(string s){ 
    std::stack<char> st;
    st.push('N');
    int l = s.length();
    string ns;
 
    for (int i = 0; i < l; i++){ 
        if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= '0' && s[i] <= '9')) {
            ns += s[i];
            ns = ns + " ";
        }
 
        else if (s[i] == '(')
            st.push('(');
 
        else if (s[i] == ')'){
            while (st.top() != 'N' && st.top() != '('){
                char c = st.top();
                st.pop();
                ns += c;
            }
            if (st.top() == '('){
                char c = st.top();
                st.pop();
            }
        }
 
        else {
            while (st.top() != 'N' && priority_operations(s[i]) <= priority_operations(st.top())){
                char c = st.top();
                st.pop();
                ns += c;
                ns = ns + " ";
            }
            st.push(s[i]);
        }
 
    }
    
    while (st.top() != 'N'){
        char c = st.top();
        st.pop();
        ns += c;
    }
 
    return ns;
}
 
 
double solver(string str1) {
    stack<double>stack;
    double first, second;
    istringstream is(str1);
 
    for (; is >> str1;){
        if (str1.compare("#")==0) {
            first = stack.top();
            stack.pop();
            second = stack.top();
            stack.pop();
            stack.push(2*second - first);
        }
 
        else if (str1.compare("~")==0) {
            first = stack.top();
            stack.pop();
            second = stack.top();
            stack.pop();
            stack.push(second + first);
        }
        
        else {
            stack.push(strtof(str1.c_str(), NULL));
        }
    }
 
    return stack.top();
}
 
int main(){
    string exp = "4#1";
    string res=infixToPostfix(exp);
    cout << res << endl;
    cout << solver(res) << endl;
    system("pause");
    return 0;
}
взято отсюда https://stackoverflow.com/ques... calculator

Вернуться к обсуждению:
Калькулятор с новыми операциями C++
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2019, 09:17
Готовые ответы и решения:

Калькулятор с несколькими операциями
Привет всем гуру программирования и новичкам в этом деле! Нужна ваша помощь, совет или критика....

Работа с несколькими операциями калькулятор
Помогите пожалуйста, сделать так, чтобы калькулятор считал несколько действий. Например 1+2+1, не...

Калькулятор. Вычисление выражений с несколькими операциями
Пытаюсь сделать возможным вычисление значения выражения типа 12+23+334-21, нажав «=» только один...

Калькулятор на php: как правильнее работать с арифметическими операциями
Скачал методичку ШАГа, прошел переменные, математические функции, массивы, строки, вызов функций. ...

11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2019, 09:17

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вычисление выражений с операциями отношения и логическими операциями
Лабораторная Работа № 5 Тема: Вычисление выражений с операциями отношения и логическими...

Массив с новыми элементами
Добрый вечер. Не получается написать программу которая коректно вычисляет элементы массива.Выводит...

Клонирование объекта с новыми параметрами
Доброго времени суток. Клонирую объект с новыми параметрами. Как это правильно записать? // В...

Не запускается с новыми планками ОЗУ
Здравствуйте дорогие Форумчане! У меня проблема с новыми планками оперативной памяти. Итак к...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.