Вверх ↑
Этот топик читают: Гость
Ответов: 522
Рейтинг: 167
#1: 2010-10-26 20:22:29 ЛС | профиль | цитата
Приветик всем. Для проверки дом задания у ребёнка (поиск неизвестного числа) решил сконструировать программку...
Первая идея которая пришла -выкладываю здесь . В общем то работает, но очень медленно.. Можно ли как-то ускорить процесс.? Или нужно применять более "изощрённые" методы ..

code_21258.txt
карма: 4

0
файлы: 1code_21258.txt [4.3KB] [345]
Ответов: 8948
Рейтинг: 824
#2: 2010-10-26 21:34:06 ЛС | профиль | цитата
tig-rrr, поставте вместо Таймера Поток : code_21263.txt и уберите вывод промежуточных значений в Edit - они замедляют выполнение своей отрисовкой.
карма: 19

1
файлы: 1code_21263.txt [410B] [129]
Голосовали:tig-rrr
Ответов: 199
Рейтинг: 44
#3: 2010-10-26 21:40:18 ЛС | профиль | цитата
code_21264.txt


ещё бы добавил переменный шаг приращения, но лень
карма: 0

1
файлы: 1code_21264.txt [3.4KB] [165]
Голосовали:tig-rrr
Ответов: 9
Рейтинг: 1
#4: 2010-10-26 21:47:18 ЛС | профиль | цитата
Леонид писал(а):
tig-rrr, поставте вместо Таймера Поток

Или цикл с условием:
code_21265.txt
И конечноже:
уберите вывод промежуточных значений в Edit - они замедляют выполнение своей отрисовкой

Впринципе, они у меня и не успевали отображаться даже, 8113-(10101-x)=5207 посчитался за 782 мс.
карма: 0

1
файлы: 1code_21265.txt [4.1KB] [162]
Голосовали:tig-rrr
Ответов: 522
Рейтинг: 167
#5: 2010-10-26 21:53:40 ЛС | профиль | цитата
Всем спасибо , Все варианты хороши...
карма: 4

0
Ответов: 356
Рейтинг: 31
#6: 2010-10-26 22:05:07 ЛС | профиль | цитата
tig-rrr, а если завтра зададут 1+x=22
Так что,
нужно применять более "изощрённые" методы
для конвертации формулы в понятную MathParse
карма: 0

0
Ответов: 522
Рейтинг: 167
#7: 2010-10-26 22:25:43 ЛС | профиль | цитата
olDjeka писал(а):
а если завтра зададут 1+x=22

так вроде такое считает....
карма: 4

0
Ответов: 8948
Рейтинг: 824
#8: 2010-10-26 23:44:36 ЛС | профиль | цитата
tig-rrr, решаем не перебором, а подбором любые уравнения с "х" (х - латынская) Дроби заключать в скобки, между сомножителями обязательно знак "*" После ввода уравнения нажать Enter Точность - 9 знаков после запятой.

Add(MainForm,2953706,105,91)
{
Caption="Solve the equation"
}
Add(Edit,448348,105,147)
{
Left=10
Top=20
Width=365
Text="1254 + 2*(738/6 - 4*x) = (1/2)*1000 + x^3"
link(onEnter,10305337:doEvent1,[])
}
Add(Label,16044394,490,245)
{
Left=25
Top=60
link(Text,1017800:Var2,[])
}
Add(Hub,10305337,154,154)
{
OutCount=3
link(onEvent1,448348:doText2,[(180,160)(180,135)(93,135)(93,160)])
link(onEvent2,15773005:doClear,[(405,167)(405,195)])
link(onEvent3,505257:doReplace,[])
}
Add(Replace,505257,196,168)
{
SubStr="="
DestStr="-1*("
link(onReplace,1455245:doStrCat,[])
}
Add(StrCat,1455245,238,168)
{
Str2=")"
link(onStrCat,16148614:doReplace,[])
}
Add(Replace,16148614,287,168)
{
SubStr="x"
DestStr="%1"
link(onReplace,4614405:doEvent1,[])
}
Add(Memory,9853720,455,98)
{
Default=Real(1)
link(onData,9210566:doCalc,[(507,104)(507,167)])
}
Add(MathParse,9210566,518,161)
{
DataCount=1
MathStr=""
Point(doMathStr)
link(onResult,10422921:doEvent1,[])
}
Add(Hub,4614405,329,168)
{
OutCount=4
link(onEvent1,9210566:doMathStr,[])
link(onEvent2,14208056:doData,[(349,181)(349,97)])
link(onEvent3,13803456:doData,[])
link(onEvent4,5517188:doData,[(357,195)(357,139)])
}
Add(DoData,14208056,364,91)
{
Data=Integer(-100)
link(onEventData,5942241:doWork2,[])
}
Add(Hub,15355307,420,91)
{
link(onEvent1,1929132:doValue,[])
link(onEvent2,9853720:doValue,[])
}
Add(Memory,1929132,511,91)
{
Point(Data)
link(Data,1017800:Var1,[(517,79)(496,79)])
}
Add(DoData,5517188,364,133)
{
Data=Integer(100)
link(onEventData,5942241:doWork3,[(410,139)])
}
Add(HubEx,5942241,406,91)
{
link(onEvent,15355307:doEvent1,[])
}
Add(Memory,5955965,602,168)
{
Default=Real(1)
link(onData,6326644:doCompare,[])
}
Add(Hub,10422921,560,161)
{
link(onEvent1,4644009:doValue,[(581,167)(581,111)])
link(onEvent2,5955965:doValue,[])
}
Add(Memory,4644009,595,105)
{
Point(Data)
link(Data,6062853:Var1,[(601,100)(589,100)(589,215)])
}
Add(DoData,13803456,364,182)
{
Data=Integer(1)
link(onEventData,15773005:doValue,[])
}
Add(If_else,6326644,651,168)
{
Op2=Integer(1)
link(onTrue,13970947:doEvent1,[])
link(Op1,15773005:Value,[(657,160)(641,160)(641,225)(419,225)])
}
Add(Memory,15773005,413,182)
{
Default=Integer(0)
}
Add(MathParse,5083438,770,168)
{
DataCount=4
MathStr="(%1*%4 - %2*%3)"
link(X1,3409232:Var3,[(776,152)])
link(X3,1929132:Value,[(790,146)(517,146)])
link(X4,1017800:Var3,[(797,152)])
}
Add(GetDataEx,1017800,490,147)
{
Angle=3
link(Data,9853720:Value,[(461,152)])
}
Add(If_else,14137549,896,175)
{
Type=5
Op2=Integer(0)
link(onTrue,5942241:doWork1,[(939,181)(939,69)(410,69)])
link(onFalse,2830854:doWork2,[(939,188)(939,286)])
link(Op1,11079113:Result,[])
}
Add(Hub,5576779,868,168)
{
link(onEvent1,11079113:doCalc,[(889,174)(889,139)])
link(onEvent2,14137549:doCompare,[])
}
Add(MathParse,11079113,896,133)
{
DataCount=1
MathStr="%1*1000000000"
ResultType=0
}
Add(GetDataEx,6062853,602,210)
{
link(Data,5955965:Value,[])
}
Add(Hub,13970947,693,168)
{
link(onEvent1,5083438:doCalc,[])
link(onEvent2,9615644:doOperation,[])
}
Add(Math,9615644,721,175)
{
OpType=1
link(onResult,2894143:doCompare,[(765,181)(765,223)])
link(Op1,3409232:Var2,[])
}
Add(GetDataEx,3409232,721,147)
{
Angle=3
link(Data,4644009:Value,[(601,152)])
}
Add(Math,16502526,826,168)
{
OpType=3
link(onResult,5576779:doEvent1,[])
link(Op1,5083438:Result,[(832,151)(806,151)(806,208)(776,208)])
}
Add(If_else,2894143,777,217)
{
Type=5
Op2=Integer(0)
link(onTrue,16502526:doOperation,[(817,223)(817,174)])
link(onFalse,2830854:doWork1,[(823,230)])
}
Add(HubEx,2830854,819,280)
{
Angle=2
link(onEvent,16044394:doText,[(475,286)(475,251)])
}

------------ Дoбавленo в 23.43:
Форум русские буковки переиначивает
------------ Дoбавленo в 23.44:
Пришлось исправлять
карма: 19

0
файлы: 1code_21266.txt [3.7KB] [165]
Ответов: 356
Рейтинг: 31
#9: 2010-10-27 00:12:00 ЛС | профиль | цитата
tig-rrr писал(а):
так вроде такое считает
Действительно, считает, но имеет фичи.

В первой схеме: посчитал пример, задал другую формулу, недождавшись ответа за 10 мин. закрыл.
Схема PiligrimSJV в таком же случае зависла.
карма: 0

0
9
Сообщение
...
Прикрепленные файлы
(файлы не залиты)