0 / 0 / 0
Регистрация: 02.06.2018
Сообщений: 5
1

Рекурсия: вычисление значения арифметического выражения, записанного в постфиксной форме

02.06.2018, 19:46. Показов 3349. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработайте рекурсивную функцию или процедуру для решения задачи.

Составьте функцию, вычисляющую значение арифметического выражения, записанного в постфиксной форме. В выражении используются только четыре операции (+, –, *, /).

Прошу не давать ссылки на темы Вычислить арифметическое выражение, хранящееся в постфиксной записи, Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной форме
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2018, 19:46
Ответы с готовыми решениями:

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

Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной форме
Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной...

Напишите программу вычисления выражения, записанного в постфиксной форме
напишите программу вычисления, записанного в постфиксной форме ( требуется писать через рекурсию )

Организовать функцию для вычисления арифметического выражения записанного в постфиксной форме
Нужна программа: Организовать функцию для вычисления арифметического выражения записанного в...

2
Модератор
9853 / 5223 / 3304
Регистрация: 17.08.2012
Сообщений: 15,980
06.06.2018, 02:04 2
Лучший ответ Сообщение было отмечено Паскаль2018 как решение

Решение

Для вещественных чисел, без контроля ошибок:
Pascal
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
type
  expr = string[254];
 
function poliz(s: expr): expr;
var
  p, errx, erry: integer;
  x, y, t, op: string;
  xn, yn: real;
begin
  if pos(' ', s) in [0, 1]
    then poliz := s
    else begin
      s := s + ' ';
      t := '';
      x := '';
      y := '';
      repeat
        t := t + x;
        x := y;
        y := op;
        p := pos(' ', s);
        op := copy(s, 1, p - 1);
        delete(s, 1, p);
        if (length(op) = 1) and (op[1] in ['+', '-', '*', '/'])
          then begin
            val(x, xn, errx);
            val(y, yn, erry);
            case op[1] of
              '+': xn := xn + yn;
              '-': xn := xn - yn;
              '*': xn := xn * yn;
              '/': xn := xn / yn
            end;
            str(xn, x);
            s := t + x + ' ' + s
          end;
      until (length(op) = 1) and (op[1] in ['+', '-', '*', '/']);
      delete(s, length(s), 1);
      poliz := poliz(s)
    end
end;
 
var
  s: string;
 
begin
  write('Enter expression: ');
  readln(s);
  write('Result: ', poliz(s));
  readln
end.
Обработку ошибок, если нужно, можно прикрутить.

Формат входного выражения: строка, термы разделять ровно одним пробелом, пробелы в начале и конце строки не допускаются.
0
Модератор
9853 / 5223 / 3304
Регистрация: 17.08.2012
Сообщений: 15,980
08.06.2018, 00:02 3
Хмм... Я допустил алгоритмическую ошибку. Если во время вычисления выражения получится отрицательное число, то оно сольётся с предыдущим термом. Нужно строку 35 заменить на две строки:
Pascal
35
36
            s := t + ' ' + x + ' ' + s;
            while pos('  ', s) > 0 then delete(s, pos('  ', s), 1) //в кавычках по два пробела
0
08.06.2018, 00:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2018, 00:02
Помогаю со студенческими работами здесь

организовать функцию для вычисления арифметического выражения записанного в постфиксной форме
Нужна программа: Организовать функцию для вычисления арифметического выражения записанного в...

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

Вычисление выражения записанного в постфиксной форме
требуется написать процедуру вычмсления выражения в постфиксной форме,например 453+-45/+*2^3+. мой...

Написать программу,которая вычисляет значение арифметического выражения записанного в постфиксной форме,с помощью стека
Написать программу,которая вычисляет значение арифметического выражения записанного в постфиксной...

Вычисление арифметического выражения в постфиксной форме с использованием стека
Помогите найти ошибку в функции. Шлет в стек мусор при выполнении знаковых операций и ничего не...

Вычисление значения выражения в постфиксной форме
Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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