Главная страница
    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.04 c
2-1194847910
Layner
2007-11-12 09:11
2007.12.09
Посоветуйте ф-ю определения размер ОЗУ / свободной памяти


2-1195046408
Jason
2007-11-14 16:20
2007.12.09
Как удалить динамически созданные едиты?


15-1194319585
Учитель
2007-11-06 06:26
2007.12.09
Какие есть БЕСПЛАНТЫЕ программы по созданию видеоуроков?


8-1170681481
Master_
2007-02-05 16:18
2007.12.09
Как узнать имя кодека, которым сжат видеофайл


11-1180165434
Vladimir Kladov
2007-05-26 11:43
2007.12.09
Версия 2.63





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