Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2009, 15:36   #1
Yaga
Пользователь
 
Аватар для Yaga
 
Регистрация: 13.05.2008
Сообщений: 69
По умолчанию Мат. операции в поле еdit

Только только начал изучать делфи и не совсем ориентируясь в тонне литературы по этой тематике, причем, то, что мне надо найти так и не могу, вот и обращаясь, дайте какую-либо подсказку, ориентир. Загвоздка вот в чем. Как делать простые математические операции в поле edit: деление, умножение, сложение и т.д. Допустим у меня на форме 3 компонента edit и одна кнопка. В двух едитах содержатся какие-то значения, нужно, чтобы при нажатии на кнопку производился мат. расчет и результат выводился в третьем едите, ну например, значение edit2 нужно разделить на значение edit1 и результат записывается в edit3 - и это действие происходит при нажатии на кнопку. Как это сделать, подскажите, пожалуйста, вы же все можете
Yaga вне форума Ответить с цитированием
Старый 24.06.2009, 15:44   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
edit3.text:=floatTostr(round(strtofloat(edit2.text)/strtofloat(edit1.text)*100)/100)
пропиши в событии onclick кнопки!
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 24.06.2009 в 17:34.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 24.06.2009, 17:17   #3
Yaga
Пользователь
 
Аватар для Yaga
 
Регистрация: 13.05.2008
Сообщений: 69
По умолчанию

А если числа десятичные, и нужно, чтобы осталось в результате 2 знака после занятой, тогда как это описать?
Yaga вне форума Ответить с цитированием
Старый 24.06.2009, 18:29   #4
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

Цитата:
А если числа десятичные, и нужно, чтобы осталось в результате 2 знака после занятой, тогда как это описать?
Посмотри на функцыю RoundTo
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 24.06.2009, 18:32   #5
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Код:
function FloatToStrF(Value: Extended; 
                     Format: TFloatFormat; 
                     Precision, Digits: Integer): string;
Функция FloatToStrF преобразовывает действительное значение Value в строку, используя заданный формат Format, точность Precision и число цифр Digits. Параметр Value - действительная константа или выражение. Возможные значения параметра означают следующее:
ffGeneral-Основной числовой формат
ffExponent-Научный формат
ffFixed-Формат с фиксированной запятой
ffNumber-Числовой формат
ffCurrency-Монетарный формат
Параметр Precision определяет точность преобразовываемого значения. Значение Precision должно быть не более 7 при преобразовании типа Single, не более 15 для Double, не более 18 для Extended.
Параметр Digits совместно с Format определяют форматирование строки.

Если преобразовываемое выражение окажется не числом, функция вернет значение "NAN". Если преобразовываемое значение превышает по модулю величину, допустимую для объявленного типа данных, функция вернет значение "INF" (бесконечность) или "-INF" (минус бесконечность).
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 29.06.2009, 17:03   #6
Yaga
Пользователь
 
Аватар для Yaga
 
Регистрация: 13.05.2008
Сообщений: 69
По умолчанию

Э, почти понял принцип. А помогите еще вот с чем. Как с процентами работать. Вот, например, имеется 3 компонента еdit. В первом содержится какое, то значение, во втором мы вводим количество процентов, на которое будем увеличивать то значение, которое есть в первом едите. Третий едит - это результат, то есть значение первого едита умноженое на процентное значение второго едита. Какие функции есть для этого, как сделать такое?
Yaga вне форума Ответить с цитированием
Старый 29.06.2009, 17:09   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
Edit3.Text := FloatToStr( StrToFloat(Edit1.Text) * (StrToFloat(Edit2.Text)+100) );
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.06.2009, 17:11   #8
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

Код:
Edit3.Text:=Inttostr( Strtoint(Edit1.text)div 100 * Strtoint(Edit2.text) + Strtoint(Edit1.text));
Div - Целочисленно деление (Любой остаток отвергается)
Будь проще, бери пример с одноклеточных
856100 вне форума Ответить с цитированием
Старый 29.06.2009, 19:40   #9
Yaga
Пользователь
 
Аватар для Yaga
 
Регистрация: 13.05.2008
Сообщений: 69
По умолчанию

Эх, нифига я не понял, хотел сам написать задачку, да не получается ничего. Короче, есть 3 едита, один checkbox, и одна кнопка. Допустим, задача для расчета зарплаты, в первом едите стоит значение основой з.п. Во втором - пользователя ставит процент премии. То есть, если у человека зарплата 1000 руб, а во втором едите стоит значение 100, то к з.п. прибавится премия в размере 100% от з.п. То есть общая зарплата будет 2000 рублей. Общая зарплата выводится в едите3. А если еще стоит галочка чекбокса, назовем ее надбавка за вредность, то к основной зарплате и премии будет добавлена сумма в размере 100% основной зарплаты (значение едит1). Итак, в конечном виде: при установленой галочке, значение едит1=1000, едит2=100(%). При нажатии кнопки в едит3 должна вывестись общая зарплата 3000 руб. Все просто как божий день, а но как это выглядит в кодовом виде? о_0
Yaga вне форума Ответить с цитированием
Старый 29.06.2009, 21:10   #10
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

Код:
var a, b:integer;
begin
a:=StrToInt(Edit1.Text);
//зпоминаем зарплату
b:=StrToInt(Edit2.Text)+100;
//берем % надбавки и прибавляем к нему еще 100%
if ChBox.Checked
  then inc(b, 100);
//если стоит галочка - то прибавляем еще 100%
a:=Round(a*(b/100));
//зарплату умножаем на коефицыент.. тоесть на пролучившийся процент..
Edit3.Text:=IntToStr(a);
//выводим ее в эдит3
end;
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После ввода в поле по Enter нужно перейти на другое поле! •ScReam•™ Помощь студентам 2 16.06.2009 08:47
Решение мат. примера Kashp Помощь студентам 2 21.09.2008 11:19
Мат. Стат. [Smarik] Помощь студентам 4 13.05.2008 19:19
Есть ли в СИ мат.ф-я факториал? NEWLOGIN Общие вопросы C/C++ 1 10.05.2008 18:32