Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VB

Программирование VB

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: VB получение данных из уравнения
 
 автор: Maksimilian   (13.04.2010 в 15:49)   личное сообщение
 
 

Помогите пожалуйста. есть уравнение типа:
-3E-11x3 + 1E-07x2 - 0,0003x + 6,0761
которое вводится в поле.
Нужно:
Взять коэффициенты при переменных т. е. после ввода и нажатии кнопки должно:
а = -3E-11
b = 1E-07
с= - 0,0003
d=6,0761
Не получается никак(

  Ответить  
 
 автор: ДрЮня   (13.04.2010 в 15:56)   личное сообщение
 
 

используйте функцию Split() с поиском по " "
далее анализ полученных "кусочков", пока в "кусочке" не встретиться "х"

  Ответить  
 
 автор: Maksimilian   (13.04.2010 в 17:09)   личное сообщение
 
 

Спасибо за идею, буду пробовать.

  Ответить  
 
 автор: snipe   (14.04.2010 в 00:57)   личное сообщение
 
 

а почему бы Вам не вводить уравнение не в одно поле а в четыре
т.е. просто коэффициенты и тогда вычленять ни чего не надо

  Ответить  
 
 автор: Maksimilian   (20.04.2010 в 21:49)   личное сообщение
 
 

Так и делаю, но уравнений много, очень трудоемко(
А может возможно из строковой переменной формулу реализовать?

Допустим у меня в базе данных хранятся все эти формулы типа
y = -2E-10x3 + 1E-06x2 + 0,0038x + 11,6
можно ли что бы по этой (выбранной) формуле расчет шел?
Формулы все типичные третьей степени.
Заранее спасибо!

  Ответить  
 
 автор: ДрЮня   (20.04.2010 в 22:02)   личное сообщение
 
 

сделайте две таблицы
"уравнение"
"коэффициенты"
связь по ключу - выбираете уравнение - получаете четыре его коэффициента

  Ответить  
 
 автор: Maksimilian   (20.04.2010 в 22:38)   личное сообщение
 
 

Допустим у меня есть уравнение в таблице, а как его вытащить в код VB?
Из таблицы я его же как "строку" вытащу. Или я чего-то не понимаю....

  Ответить  
 
 автор: ДрЮня   (20.04.2010 в 22:53)   личное сообщение
 
 

в таблице "уравнения", например, два поля id , name
в таблице "коэффициенты", поля id_уравнения , a,b,c,d (в ней хранятся только коэффициенты)
при выборе уравнения в таблице "уравнения" из таблицы "коэффициенты" получаете для него коэффициенты и собирает все выражение

  Ответить  
 
 автор: Maksimilian   (21.04.2010 в 10:07)   личное сообщение
 
 

Вот и вопрос в том как собрать выражение.
Вот я выбрал уравнение:
y = "a * x3 + b * x2 с * x + d"
либо выбрал вот такое
y ="-4E-10*x3 + 1E-06*x2 - 0,0015*x + 13,563"

как я понимаю оно у меня как строка хранится в базе
тут же по связям загружаются коэффициенты
а = -4E-10
b = 1E-06
с = - 0,0015
d = 13,563
так же у меня известен х
возможно ли найти "y " по данному уравнению?

  Ответить  
 
 автор: Lukas   (21.04.2010 в 12:07)   личное сообщение
 
 

Можно.
Кстати, зачем хранить и формулу целиком строкой, и коэффициенты, если формула одна?
Если в настоящее время имеется множество формул-строк, то можно
1. "добывать" коэффициенты и считать формулу.
2. без "добывания" коэффициентов, как-то так:

Public Function Result(Str As String, X As Double) As Double
    Dim strTemp As String
    
    If Len(Str & "") = 0 Then Exit Function
    
    strTemp = Replace(Str, "х", "x") 'х-русскую на x-аглицкую
    strTemp = Replace(strTemp, "x3", CStr(X) & "^3")
    strTemp = Replace(strTemp, "x2", CStr(X) & "^2")
    strTemp = Replace(strTemp, "x", CStr(X))
    strTemp = Replace(strTemp, ",", ".")
'Debug.Print strTemp
    Result = Eval(strTemp)
End Function

  Ответить  
 
 автор: Maksimilian   (26.04.2010 в 16:39)   личное сообщение
 
 

Спасибо большое! Получилось!

-2E-09*x3 + 5E-06*x2 + 0,004*x + 15,137

-2E-09*1000^3 + 5E-06*1000^2 + 0.004*1000 + 15.137
22,137

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList