Форум: "Начинающим";
Текущий архив: 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