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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2013, 22:36   #1
Xatiko
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 11
Восклицание написание формулы

Доброго времени суток!
Есть проблема при написании формулы. Приведу пример:

Для одного объекта:
(x1*z1)/(z1)
(y1*z1)/(z1)

Ed-это (х) Ed1-это (у) Ed2-это (z)

Код:
procedure TForm1.Button8Click(Sender: TObject);
begin
if form1.ComboBox1.ItemIndex=0 then
begin
label37.Caption:=Floattostr(StrToInt(Ed[1].text)*StrToInt(Ed2[1].text)/StrToInt(Ed2[1].text));
label38.Caption:=Floattostr(StrToInt(Ed1[1].text)*StrToInt(Ed2[1].text)/StrToInt(Ed2[1].text));
end
Для двух:
(x1*z1)+(x2*z2)/(z1+z2)
(y1*z1)+(y2*z2)/(z1+z2)

В этой же процедуре.
Код:

else
if form1.ComboBox1.ItemIndex=1 then
begin
label37.Caption:=Floattostr(((StrToInt(Ed[1].text)*StrToInt(Ed2[1].text))+((StrToInt(Ed[2].text)*StrToInt(Ed2[2].text)))/(StrToInt(Ed2[1].text)+StrToInt(Ed2[2].text))));
label38.Caption:=Floattostr(((StrToInt(Ed1[1].text)*StrToInt(Ed2[1].text))+((StrToInt(Ed1[2].text)*StrToInt(Ed2[2].text)))/(StrToInt(Ed2[1].text)+StrToInt(Ed2[2].text))));
end;
end;
Вопрос в том что, для одного работает, а для двух выводит огромные значения которых даже не вводили. А вообще надо хотя бы до 20. Но так как уже не работает для двух, смысла дальше нет двигаться.
Есть догадки, что не так расставленны скобки и компилятор выполняет не те арифмитические действия.
Xatiko вне форума Ответить с цитированием
Старый 11.03.2013, 22:44   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А точно так - (x1*z1)+(x2*z2)/(z1+z2)?
Может (x1*z1+x2*z2)/(z1+z2)?
И что-то много Вы скобок понаставили.
Попробуйте:
Код:
label37.Caption := Floattostr(StrToFloat(Ed[1].text)*StrToFloat(Ed2[1].text)+StrToFloat(Ed[2].text)*StrToFloat(Ed2[2].text)/(StrToFloat(Ed2[1].text)+StrToFloat(Ed2[2].text)));
(для Вашей формулы, а не моего предположения)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 11.03.2013, 22:47   #3
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А на бумажке посчитать не пробовали?
ReportCube вне форума Ответить с цитированием
Старый 12.03.2013, 00:40   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

а вопрос еще, откуда у вас вводятся данные? какие типы данных должны быть? саму формулировку задачи напишите, и вам все это нужно вывести в метку?

floattostr-преобразование числа с плавающей точкой в строку,
strtoint-преобразование из строки в целое число число

В итоге у вас получается какое-то число с плавающей точкой и вы его суете в метку? для чего? напишите ваше ТЗ просто и все
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 12.03.2013, 14:36   #5
Xatiko
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 11
По умолчанию

BDA Спасибо помогло))
Только пару скобок поставил)
label37.Caption:=Floattostr((StrToF loat(Ed[1].text)*StrToFloat(Ed2[1].text)+StrToFloat(Ed[2].text)*StrToFloat(Ed2[2].text))/((StrToFloat(Ed2[1].text)+StrToFloat(Ed2[2].text))));
label38.Caption:=Floattostr((StrToI nt(Ed1[1].text)*StrToInt(Ed2[1].text)+StrToInt(Ed1[2].text)*StrToInt(Ed2[2].text))/((StrToInt(Ed2[1].text)+StrToInt(Ed2[2].text))));
Xatiko вне форума Ответить с цитированием
Старый 12.03.2013, 15:32   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Пожалуйста.
Все же нужна была формула (x1*z1+x2*z2)/(z1+z2).
У Вас в обоих знаменателях лишние скобки (2 открывающие и 2 закрывающие скобки), правда, это не влияет на расчет.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание формулы Ksenia_84 Microsoft Office Access 3 29.08.2012 23:00
Написание формулы на паскале. spinogryz_ua Помощь студентам 8 15.01.2012 01:15
Помощь в написание формулы x_omega_x Microsoft Office Excel 1 07.07.2009 13:52
Написание формулы на C++ Noor Общие вопросы C/C++ 11 08.01.2007 14:15
написание формулы vladi Microsoft Office Excel 6 31.12.2006 18:16