Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2014, 14:57   #1
Casillas1
Пользователь
 
Регистрация: 29.04.2013
Сообщений: 55
По умолчанию Программа которая вычисляет польскую инверсную запись на С++ или Паскаль

Программа которая вычисляет польскую инверсную запись на С++ или Паскаль
Casillas1 вне форума Ответить с цитированием
Старый 05.11.2014, 15:30   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

А ещё вот ТУТ посмотрите, что то похожее..


А вообще, вычисления в обратной польской записи - это очень просто.
Эта запись и придумана, чтобы максимально упростить процесс разбора и вычисления!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2014, 15:46   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,875
По умолчанию

У меня есть готовая на Делфи, но вот ваша манера просить отбивает желание выкладывать.

Вот вам подпрограмма, которая производит вычисление:

Код:
var
  S, Val: string;
  I, A, B, Res: Integer;
begin
  ReadLn(S);
  Val := '';
  for I := 1 to Length(S) do begin
    case S[I] of
      '0'..'9': Val := Val + S[I];
      ' ': if Val <> '' then begin
             stPop(StrToInt(Val));
             Val := '';
           end; {if}
      '+','-','*':
      begin
        B := stPush;
        A := stPush;
        case S[I] of
          '+': Res := A + B;
          '-': Res := A - B;
          '*': Res := A * B;
        end; {case}
        stPop(Res);
      end; {'+','-','*'}
    end; {case}
  end; {for}
  Res := stPush;
  WriteLn(Res);
end;
Осталось только реализовать подпрограммы для работы со стеком. Проверка на корректность ввода выражения отсутствует, хотя ее не сложно реализовать.

Последний раз редактировалось Arigato; 05.11.2014 в 15:52.
Arigato вне форума Ответить с цитированием
Старый 05.11.2014, 15:51   #4
Casillas1
Пользователь
 
Регистрация: 29.04.2013
Сообщений: 55
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
У меня есть готовая на Делфи, но вот ваша манера просить отбивает желание выкладывать.

Вот вам подпрограмма, которая производит вычисление:

Код:
var
  S, Val: string;
  I, A, B, Res: Integer;
begin
  ReadLn(S);
  Val := '';
  for I := 1 to Length(S) do begin
    case S[I] of
      '0'..'9': Val := Val + S[I];
      ' ': if Val <> '' then begin
             stPop(StrToInt(Val));
             Val := '';
           end; {if}
      '+','-','*':
      begin
        B := stPush;
        A := stPush;
        case S[I] of
          '+': Res := A + B;
          '-': Res := A - B;
          '*': Res := A * B;
        end; {case}
        stPop(Res);
      end; {'+','-','*'}
    end; {case}
  end; {for}
  Res := stPush;
  WriteLn(Res);
end;
Осталось только реализовать подпрограммы для работы со стеком.
я не умею!
Casillas1 вне форума Ответить с цитированием
Старый 05.11.2014, 15:53   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,875
По умолчанию

Ну тогда забей.
Arigato вне форума Ответить с цитированием
Старый 05.11.2014, 16:07   #6
Casillas1
Пользователь
 
Регистрация: 29.04.2013
Сообщений: 55
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Ну тогда забей.
спасибо большое
Casillas1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PascalABC.NET - Программа, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика. serge-first Помощь студентам 22 29.05.2013 21:39
Программа которая вычисляет принадлежит ли ли данная точка «заштрихованной» области. Kesida Помощь студентам 3 05.10.2011 03:48
Превод из инфиксной в обратную польскую запись Anny_Apple Помощь студентам 0 11.04.2011 19:22
Задача на обратную польскую запись Horknee Помощь студентам 8 11.03.2009 22:09
Pascal Перевод в Польскую запись ЮнПрог Помощь студентам 3 29.12.2008 13:51