Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Вниз

унарный минус   Найти похожие ветки 

 
sat ©   (2007-03-23 00:31) [0]

у меня есть программа которая вычисляет выражения в обратной польской записи(+,-,*,/). Подскажите как мне переделать прогу чтобы появился и унарный минус. Прога стандартная


var
 Stack : TStack;
 s ,z ,y : string;
 i , a, b: integer;
begin
Stack :=  TStack.Create;
with stack do begin
 s:=Edit1.Text;
z:="";
y:="";
i:=1;
 while length(s)<>0 do
   begin
    if not (s[i] in znaki) then
     begin
      while s[i]<>" " do
       begin
        z:=z+s[i];
        inc(i);
       end;
      delete(s,1,i);
      Push(Pointer(StrToInt(z)));
      i:=1;
      y:=z;
      z:="";
     end
    else
     begin
        pointer(a):=pop;
        pointer(b):=pop;
      case s[i] of
       "+": begin
             Push(Pointer(a+b));
            end;
       "-": begin
             Push(Pointer(b-a));
            end;
       "*": begin
             Push(Pointer(b*a));
            end;
       "/": begin
             Push(Pointer( round(b/a) ));
            end;
      end;
      delete(s,1,2);
     end;
    end;
pointer(a):=pop;
Edit2.Text:=FloatToStr(a);
end;



 
sat ©   (2007-03-23 00:32) [1]

да и еще описано

const   znaki = ["+","-","*","/"];


 
Германн ©   (2007-03-23 01:34) [2]

Открыл тут свой старый архив от сентября 97-го, где я работал с обратной польской записью и понял, что уже голова не варит :(


 
MBo ©   (2007-03-23 06:51) [3]

Или использовать специальный символ для унарного минуса, или сделать операцию бинарной (-a => 0 - a)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.048 c
11-1146297860
Un-man
2006-04-29 12:04
2007.04.15
HotKey?


2-1174150549
Василиус
2007-03-17 19:55
2007.04.15
Таскаю по TImage курсор мыши


15-1174134395
ArtemESC
2007-03-17 15:26
2007.04.15
Супер-прога на Delphi...


6-1161759501
Ale-xs
2006-10-25 10:58
2007.04.15
Как отправить UDP пакет с другим IP адресом


2-1174820574
aht
2007-03-25 15:02
2007.04.15
Обнуление "счетчика" в Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский