forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Калькулятор (http://forum.boolean.name/showthread.php?t=6150)

anton_obuhov 22.07.2008 15:24

Калькулятор
 
Кароч дело обстоит так
Есть переменная которой присвоена команда создание edita над нип надпись введите число

Вопросы
1.Как сделать простейшее сложение (но чтобы два числа вводил пользователь )

Tadeus 22.07.2008 23:11

Ответ: Калькулятор
 
Скачай русскую версию от odd - погугли :)
А там с русской справкой разберешься, я думаю...

odd 23.07.2008 08:07

Ответ: Калькулятор
 
Тут надо парсить строку. Сначала пробегаешься по всей строке и считаешь сколько там будет */+-, а потом режешь строку на числа и в зависимости от операций делаешь те или иные операции. Почитай хорошенько обработку текстовых строк. Особенно резку.

Tadeus 23.07.2008 08:38

Ответ: Калькулятор
 
http://algolist.manual.ru/syntax/parsear.php
Вот еще по теме :-)

jimon 23.07.2008 11:44

Ответ: Калькулятор
 
anton_obuhov
сложение - ищешь где в строке +, режешь на две части
две части переводишь в цифры и складываешь

если нужен разбор всех операций то лутче всего воспользоватся обратной польской нотацией
http://algolist.manual.ru/syntax/revpn.php

odd 24.07.2008 08:32

Ответ: Калькулятор
 
Я бы делал так. Допустим, юзер ввел строку 2+2*2 режешь её и помещаеш в массив (лучше использовать вектор, реализованный в Lib_vdata). У тебя получается примерно такой массив:

2
+
2
*
2

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

2
+
4

Потом пробегаешься по массиву и ищешь и вычисляешь все деления, потом сложения и вычитания. В итоге у тебя и получится 6.
Аналогично вычисляются скобки, другие алгбраические функции и т.п.

jimon 24.07.2008 11:09

Ответ: Калькулятор
 
odd
и как оно будет считать 2*3*(4+5*6*(7+8*(9+10*(11+12)))) + 12*(13+14) ?
у тебя не получится резать по символам, потому что ты получишь под строку
а проблема в том что не известно где подстрока заканчивается пока ты её не проанализируешь

vitalik1 24.07.2008 23:52

Ответ: Калькулятор
 
А я сделал методом рекурсивного спуска.
Вот ссылки:
http://ru.wikipedia.org/wiki/Метод_рекурсивного_спуска
http://ru.wikipedia.org/wiki/Контекс...ная_грамматика

Могу выложить исходники если кому надо.

Romanzes 25.07.2008 19:03

Ответ: Калькулятор
 
Цитата:

Сообщение от vitalik1 (Сообщение 83008)
А я сделал методом рекурсивного спуска.
Вот ссылки:
http://ru.wikipedia.org/wiki/Метод_рекурсивного_спуска
http://ru.wikipedia.org/wiki/Контекс...ная_грамматика

Могу выложить исходники если кому надо.

Выложи пожалуйста, мне надо. :rolleyes:

anton_obuhov 25.07.2008 19:25

Re: Калькулятор
 
Извините за глупый вопрос но так я новичок можно как бы по русски говорить а не прогерским жаргоном. Что значит парсить строку, я порылся в русской справке там про то чтобы парсить строку или резать ничего не сказано может разъесните пожалуйста

Tadeus 25.07.2008 19:31

Ответ: Калькулятор
 
Парсить строку - это "разрезать" ее по какому-то закону. Ы :)

vitalik1 25.07.2008 21:58

Ответ: Калькулятор
 
Вложений: 1
Romanzes
Вот исходник :)

anton_obuhov 25.07.2008 22:55

Re: Калькулятор
 
а не подскажете какой командой резать надо то а то в спавке нет:dontknow:

Romanzes 26.07.2008 00:00

Ответ: Калькулятор
 
Вот, к примеру у тебя в строке 2 числа, разделенные знаком "+". Например:
str:='12345+6789';
Тогда ты находишь первое и второе числа так:
num1:=StringToInteger(Copy(str,0,Pos(str,'+')));
num2:=StringToInteger(Copy(str,Pos(str,'+')+1,Leng th(str)-1));

Про функции Copy, Pos и Length сам почитай.

anton_obuhov 26.07.2008 06:55

Re: Калькулятор
 
Вопрос такого рода вот код проги
PHP код:

program cal;
var
SummaOP1,OP2:integer;
1POLE,2POLE:command;
begin
Showform
;
1POLe:=formaddtextfield('ВВедите первое слагаемое',20,TF_Numeric);
2POLE:=formaddtextfield('ВВедите второе слагаемое',20,TF_Numeric);
OP1:=stringtointeger(formgettext(1POLE));
OP2:=stringtointeer(formgetText(2POLE));
Summa:=OP1+OP2

end


ИЗвините если код неправелен но наишите как теперь вывести число Summa? Спасибо


Часовой пояс GMT +4, время: 18:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot