Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Напишите программу, которая преобразует ваш возраст в годах в количество дней https://www.cyberforum.ru/ c-beginners/ thread1255347.html
В общем в учебнике такое задание, а ответа нет.. до этого ничего такого в самом учебнике не было написано, а я только начал изучать и пока ещё не всё знаю) вот в общем: Напишите программу, которая вызывает функцию с именем one_three ( ) . Эта функция должна напечатать слово один в одной строке , вызвать функцию two ( ) , а затем напечатать слово три в одной строке. Функция two ( ) должна...
Подсчитать число появлений в файле каждой строчной русской буквы C (СИ)
Дан текстовый файл.Подсчитать число появлений в нем каждой строчной русской буквы и создать строковый файл, элементы которого имеют вид "<буква>-<число ее появлений>"(например,"а-25").Буквы, отсутствующие в тексте, в файл не включать.Строки упорядочить по возрастанию кодов букв. Помогите написать прогу на С и Pascal
C (СИ) Найти три наибольших элемента массива Ввести массив действительных чисел длиной n (n < 30). Найти три наибольших элемента массива. https://www.cyberforum.ru/ c-beginners/ thread1255296.html C (СИ) Простое подключение файлов - исправить ошибки в коде https://www.cyberforum.ru/ c-beginners/ thread1255197.html
Доброго времени суток. Возникла такая ситуация: одно из первых занятий в институте началось с "нулевой программы". Мой преподаватель заведомо ложно написал программу неправильно, но никому об этом не говорил. Ошибка и не приметная, но visual studio ругается. Подчеркивает слова sIn и exit в 26 и 27 строчке соответственно. Прошу помощи. #include <stdio.h> #include <iostream> void...
Определить название государства с максимальной плотностью населения C (СИ)
Добрый вечер! Помогите пожалуйста разобраться, что я не так сделала? Число выводит правильное, а за место названия непонятные значки. Задание :Известны данные о численности населения (в миллионах жителей) и площади (в тысячах квадратных километров) 28 государств. Определить название государства с максимальной плотностью населения. Код программы: #include <stdio.h> #include <conio.h>...
C (СИ) Распределить числа в порядке возрастания Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по возрастанию. https://www.cyberforum.ru/ c-beginners/ thread1255070.html
C (СИ) Как получить младший байт и его старший бит https://www.cyberforum.ru/ c-beginners/ thread1255017.html
Подскажите как получить младший байт и его старший бит. И как сделать замену старшего бита младшего байта на противоположный? Работа с целыми числами.
Как в нужном порядке подключить хидеры? C (СИ)
Здравствуйте! Возникла проблема с подключение windows.h. Структура программы: main.c <- core.h <- devices.h Один из девайсов требует работы через snmp протокол. В итоге подключаю в devices.h хидер Mgmtapi.h. После компиляции по #if defined(INCLUDE_AFTER_WINDOWS_H) выпадет в #error Because of name conflicts, Windows headers must be included befor... В хидерах инклуды делаю после...
C (СИ) Написать функцию записи массива в файл. Найти ошибку https://www.cyberforum.ru/ c-beginners/ thread1254719.html
Помогите найти ошибку в программе. Я ввожу массив, а в файл записываются нули. //написать функцию записи массива в файл #include <stdio.h> #define n 10 void func(double a) { FILE *f; int i; if ((f = fopen("D:\\file.txt", "w")) == NULL)//открыли файл для записи {
C (СИ) Создать структуру для работы с битами https://www.cyberforum.ru/ c-beginners/ thread1254611.html
Всем добра:gsmile: Есть такая проблемка, сейчас постараюсь описать её. Допустим есть целое число типа int. И пусть оно длиной 16 бит. в двоичном представлении оно наверяка будет выглядеть так (если оно равно 0) 0000 0000 0000 0000. биты нумерутся от 0 до 15 как сделать в С (именно С а не С++) структуру для работы с этими битами такого плана. typedef struct { Поле1 : меняет биты с 0...
C (СИ) Написать программу чтения чисел из файла в массив
Здравствуйте. Помогите написать программу чтения чисел из файла в массив. Я написал вот что: int main() { double a; FILE *f; int i; f = fopen("D:\file.txt", "r");//открыли файл для чтения } А как считать числа из файла в массив А?
C (СИ) Решение уравнения: результат не сходится с ответом Подскажите в чем ошибка. 7вариант Ответ должен быть -172,025. У меня совсем другой. https://www.cyberforum.ru/ c-beginners/ thread1254590.html
317 / 179 / 73
Регистрация: 18.01.2014
Сообщений: 387
13.09.2014, 13:28 0

Вычислить значение произвольного выражения, представленного в обратной польской записи - C (СИ) - Ответ 6602590

13.09.2014, 13:28. Показов 3714. Ответов 21
Метки (Все метки)

Ответ

Цитата Сообщение от tyreu Посмотреть сообщение
Пример: 345+2*63/-+ = 19
Это фигня -- сначала в стек заносится 345, потом встречается оператор "+", для выполнения которого требуется извлечь из стека два операнда, а в вашем примере только один, т.е. данное выражение содержит ошибку.

Давайте определим корректное выражение, как строку, содержащую набор операндов и операторов разделенных пробельными символами, например "1 2 + 4 × 3 +" -- это корректное выражение.

Почему бы не использовать шаблонный класс std::stack для работы со стеком? К примеру, вот так:
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
#include <stack>
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
 
int main() {
    bool run = true;
    stack<double> s;
    while (run) {
        string op;
        cin >> op;
        istringstream iss(op);
        double val;
        if (iss >> val) {
            s.push(val);
        } else {
            val = s.top();
            s.pop();
            if (op == "+") {
                val += s.top();
                s.pop();
                s.push(val);
            } else if (op == "-") {
                val -= s.top();
                s.pop();
                s.push(val);
            } else if (op == "*") {
                val *= s.top();
                s.pop();
                s.push(val);
            } else if (op == "/") {
                val /= s.top();
                s.pop();
                s.push(val);
            } else if (op == "=") {
                cout << val << endl;
                run = false;
            } else {
                cout << "error" << endl;
                run = false;
            }
        }
    }
}
Пример работы:
Вычислить значение произвольного выражения, представленного в обратной польской записи

Замечу, что вышеприведенная программа имеет множество недостатков, к примеру, при получении оператора и вычислении результата не проверяется то, что стек может быть пуст. Но она работает на заведомо корректных выражениях -- можете использовать ее, как заготовку для своей рабочей программы.

Вернуться к обсуждению:
Вычислить значение произвольного выражения, представленного в обратной польской записи C (СИ)
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2014, 13:28
Готовые ответы и решения:

Вычислить значение произвольного выражения, представленного в обратной польской записи
Вычислить значение произвольного выражения, представленного в обратной польской записи. Например:...

Нужно написать написать программу, которая вычисляет значение выражения в обратной польской записи
Обра́тная по́льская запись (англ. Reverse Polish notation, RPN) — форма записи математических и...

Вычислить значение выражения представленного в обратной польской записи
Здравствуйте! Нужна помощь с заданием по питону. Задание: Арифметическое выражение можно...

Вычислить значение выражения в обратной польской записи с использованием стека
Вычислить значение выражения в обратной польской записи с использованием стека. например 6 2 + = 6...

21
13.09.2014, 13:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2014, 13:28
Помогаю со студенческими работами здесь

Вычисление выражения, использование обратной польской записи
приветствую, люди. можете помочь с реализацией вычисления выражения с помощью обратной польской...

Калькулятор считающий выражения обратной польской записи из файла
Здравствуйте! У меня вот такое задание &quot;Напишите программу, вычисляющую выражение в обратной...

Вывод выражения при помощи обратной польской записи
Помогите пожалуйста написать программу на паскале чтобы она выражение выводила при помощи обратной...

Построить дерево выражения, записанного в виде обратной польской записи
в текстовом файле дано арифметическое выражение в обратной польской записи. постройте дерево,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru