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

Вниз

Работа со скобками   Найти похожие ветки 

 
alikon1   (2007-11-12 22:15) [0]

Как можно реализовать, чтоб при нажатии в моем калькуляторе последовательности:
1. (
2. 15
3. +
4. 30
5. )
6. sin

в label записалось sin(15+30) ?

Просто
1. 45
2. sin

сделал как:
len:=length(stroka)-length(waited_n);  // вычисляет длину строки без последних введенных 45
delete(stroka,len+1,length(waited_n)); // удаляет в строчке 45
stroka:=Stroka+"cos("+waited_n+")";     // записывает в строчку sin(45)

А как сделать, чтоб работало не с одним числом, а со скобками не знаю, не получается. Подскажите пожалуйста.


 
Джо ©   (2007-11-12 22:28) [1]

Это всю велосипед. Будет с квадратными колесами, даже если и (чудом!) поедедет.
Начните с теории. Начать очень просто: Google + разбор математических выражений


 
Zeqfreed ©   (2007-11-12 23:21) [2]

Требуется формализация задачи. А то вариантов напридумывать можно сколько угодно.


 
antonn ©   (2007-11-12 23:29) [3]

http://kladovka.net.ru/index.cgi?pid=list&rid=28


 
Zeqfreed ©   (2007-11-12 23:50) [4]

Чего вы ему все советуете мат. парсер. Тут задача несколько другая.


 
Johnmen ©   (2007-11-13 00:18) [5]


> stroka:=Stroka+"cos("+waited_n+")";     // записывает в строчку sin(45)

Который зовется cos?
А впрочем тебе еще рано об этом (с)


 
antonn ©   (2007-11-13 00:39) [6]


> Чего вы ему все советуете мат. парсер. Тут задача несколько
> другая.

Потому что невнимательно читаем :)


 
Германн ©   (2007-11-13 02:04) [7]


> А как сделать, чтоб работало не с одним числом, а со скобками
> не знаю, не получается. Подскажите пожалуйста.

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


 
alikon1   (2007-11-13 08:56) [8]

ну я cos(45) имел ввиду

в постфиксную запись переделываю, вычисляю с приоритетом действий - все это работает. Но ведь для этого надо вводить пример непосредственно в текстовое поле. А мне необходимо это кнопками калькулятора вводить. Вот и получается, что если выражение в скобках перед(!,^)/после функции (sin/cos/tg) то вычислять надо то значение из скобок, а вычисляется функция только последнего числа из скобок.

А как задать, чтоб функцию от всей скобки считал?


 
alikon1   (2007-11-13 20:39) [9]

http://ifolder.ru/4121889 а это сам исходник


 
Zeqfreed ©   (2007-11-13 23:18) [10]

Если я правильно понял что требуется, то вот код на Си, написанный на скорую руку: http://pastebin.ca/772424

Авось чем поможет :)


 
alikon1   (2007-11-14 09:57) [11]

Может и помогло бы, да только я Си в глаза не видел. :)) Delphi и то 3 недели только изучаю.


 
alikon1   (2007-11-15 15:54) [12]

Вот так вот сделал, вроде работает.

s:=0;
ss:=0;
len:=length(stroka);

if stroka[len]=")" then
 begin
 for i:=len downto 1 do
   begin
     if stroka[i]=")" then begin s:=s+1; ss:=ss+1; end
     else if stroka[i]="(" then begin ss:=ss-1; if ss=0 then break; end;
   end;
 end;
label2.Caption:=inttostr(s);
if stroka[len]=")" then
 begin
 for i:=len downto 1 do
   begin
     if stroka[i]="(" then
       begin s:=s-1; if s=0 then begin Insert("sin",stroka,i); break; end; end;
   end;
 end
 else
   begin
       len:=length(stroka)-length(waited_n);
      delete(stroka,len+1,length(waited_n));
      stroka:=Stroka+"sin("+waited_n+")";
   end;



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

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

Наверх




Память: 0.47 MB
Время: 0.044 c
1-1189439907
Юра
2007-09-10 19:58
2007.12.09
Проблемма с TabControl


2-1195204449
031178
2007-11-16 12:14
2007.12.09
SendMail


15-1194559339
Pacific
2007-11-09 01:02
2007.12.09
Функции


2-1194953917
Uno
2007-11-13 14:38
2007.12.09
Неудается переписка


3-1185134768
Tendr
2007-07-23 00:06
2007.12.09
Соединение с СУБД Oracle через delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский