|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.09.2010, 23:25 | #1 |
Форумчанин
Регистрация: 16.02.2010
Сообщений: 187
|
действия над числами в строке
Здравствуйте
вот такой вроде не сложный но в тоже время интересный вопрос, как сделать действия над числами если они все в одной строке и разделены знаками, например: S:='1+2+2-3+5-1='; пробовал сделать так но что то запутался в парсе( Код:
|
29.09.2010, 23:54 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
я выкладывал готовый парсер - тут
p.s. там исходники, код несложный, легко разберётесь, если нужно. p.p.s. Вычисление результата выражений. Допустимые операции: + - * / Приоритет обычный, для изменения приоритета допускается задание скобок ( в т.ч. вложенных). |
30.09.2010, 01:14 | #3 |
Форумчанин
Регистрация: 15.12.2007
Сообщений: 422
|
Да, лучше всего так как написал Serge_Bliznykov, но если хочется пострадать фигней, то можно через цикл for проверять каждый элемент строки на знаки +, - и если такие находятся то складывать или вычитать число предыдущее и следующее. Но а если будет знак * или / тогда задача на порядок усложняется. Поэтому не страдайте фигней и используйте парсер
|
30.09.2010, 08:08 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А я бы не морочил голову а скормил бы все это Экзелу, или какому нить ОпенОфису:
http://www.programmersforum.ru/showthread.php?t=100279
I'm learning to live...
|
30.09.2010, 15:22 | #5 | |
Форумчанин
Регистрация: 16.02.2010
Сообщений: 187
|
Цитата:
|
|
30.09.2010, 15:33 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Дык просто бери код и вставляй, не забыв оказать в дизайне события соответствующие.
Он откроет Экзель, скормит ему формулу в ячейку (Экзель сразу ее посчитает, он умный), и получит результат, который выведет в заголовок формы
I'm learning to live...
|
30.09.2010, 15:40 | #7 |
Форумчанин
Регистрация: 16.02.2010
Сообщений: 187
|
если не сложно подскажите кодом, и что такое Экзель пытался поискать в google инфы по нём нету)
|
30.09.2010, 15:42 | #8 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
Экзель - это Excel.
По сабжу: Компоненты CalcExpress и DiffExpress - это интерпретаторы для вычисления математических выражений. Поддерживают 5 операций, скобки, 18 математических функций и определение пользовательских переменных. P.S. Я когда-то писал программу с БД и в одно из строковых полей вставлял формулу (типа Summa = "(Kolichestvo * Cena) + NDS"), по которой какие-то поля этой строки должны рассчитываться. А бухгалтер при необходимости могла сама изменять формулу (разумеется, только с существующими переменными). Мне же самому ЛЕНЬ изменять формулу и перекомпилировать программу. Ох, всё от лени. Все это выглядело очень эффектно :=)) Последний раз редактировалось _SERGEYX_; 30.09.2010 в 15:53. |
30.09.2010, 16:21 | #9 | |
Форумчанин
Регистрация: 16.02.2010
Сообщений: 187
|
я вот не пойму причём тут формула)))) тут же не по формуле нужно что то сделать, а сделать действия над числами(-,+)
поставил DiffExpress.pas, думал так разберусь глянув в компонент) но не тут то оно было вот что это значит из примера ? Цитата:
|
|
30.09.2010, 16:40 | #10 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Кстати вспомнил тут еще один финт Код:
I'm learning to live...
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Действия над неизвестными | korsmile | Общие вопросы Delphi | 3 | 04.09.2010 18:54 |
действия над многочленами | nuevegramodelamor | Помощь студентам | 4 | 21.06.2010 01:31 |
линейные действия над векторами | morgan996 | Помощь студентам | 4 | 09.01.2010 00:13 |
Действия над массивами | hen | Помощь студентам | 2 | 06.06.2009 23:34 |
Pascal действия над числами | werser | Помощь студентам | 1 | 13.11.2008 22:55 |