Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26066
Рейтинг: 2120
#16: 2008-02-09 20:20:53 ЛС | профиль | цитата
Tad, до 4999 в стандартном исчислении, без черточек.

------------ Дoбавленo:


Вот пример с исправлениями, и ничего сложного там нет:



Add(MainForm,280613,98,84)
{
Left=20
Top=105
Width=221
Height=152
Caption="DecimalToRoman"
Position=1
}
Add(IntegerArray,5682974,294,77)
{
IntArray=['M'=1000,'IM'=999,'CM'=900,'D'=500,'ID'=499,'CD'=400,'C'=100,'IC'=99,'XC'=90,'L'=50,'IL'=49,'Xl'=40,'X'=10,'IX'=9,'V'=5,'IV'=4,'I'=1]
FileFormat=1
}
Add(Memory,237103,448,126)
{
Default=String()
}
Add(Hub,12748134,147,133)
{
OutCount=4
link(onEvent1,237103:doClear,[])
link(onEvent2,13350876:doEnum,[])
link(onEvent3,4243737:Convert,[(195,153)(195,391)])
link(onEvent4,3594571:Convert,[(195,160)(195,447)])
}
Add(StrCat,3358455,448,294)
{
link(onStrCat,237103:doValue,[(492,300)(492,216)(436,216)(436,132)])
link(Str1,237103:Value,[])
link(Str2,13350876:Item,[(461,193)(209,193)])
}
Add(Memory,1401807,287,203)
{
}
Add(Repeat,13396544,287,287)
{
Type=4
link(onRepeat,16756407:doOperation,[])
link(Op1,7377394:Var2,[])
link(Op2,16082805:Var2,[])
}
Add(Math,16756407,343,287)
{
OpType=1
ResultType=0
link(onResult,16357683:doEvent1,[])
link(Op1,7377394:Var3,[(349,247)])
link(Op2,16082805:Var3,[(356,261)])
}
Add(ArrayRW,8141205,294,140)
{
link(onRead,13396544:doRepeat,[(338,146)(338,220)(255,220)(255,293)])
link(Array,5682974:Array,[])
link(Index,13350876:Index,[(307,128)(261,128)(261,184)(216,184)])
}
Add(Edit,6388985,210,203)
{
Left=20
Top=10
Width=85
Text=""
DataType=1
link(onChange,8569447:doWork2,[])
}
Add(Edit,2067103,448,343)
{
Left=110
Top=10
Width=85
Text=""
link(Str,3358455:Result,[])
}
Add(Button,1396319,98,133)
{
Left=80
Top=90
Caption="Convert"
link(onClick,12748134:doEvent1,[])
}
Add(StrList,6645552,189,63)
{
Strings=#1:M|2:IM|2:CM|1:D|2:ID|2:CD|1:C|2:IC|2:XC|1:L|2:IL|2:XL|1:X|2:IX|1:V|2:IV|1:I|
}
Add(ArrayEnum,13350876,203,140)
{
link(onItem,8141205:doRead,[])
link(onEndEnum,2067103:doText,[(369,153)(369,349)])
link(Array,6645552:Array,[])
}
Add(GetDataEx,7377394,280,238)
{
link(Data,1401807:Value,[])
}
Add(GetDataEx,16082805,287,252)
{
link(Data,8141205:Item,[])
}
Add(HubEx,8569447,259,196)
{
link(onEvent,1401807:doValue,[])
}
Add(Hub,16357683,392,287)
{
link(onEvent1,8569447:doWork3,[(436,293)(436,253)(263,253)])
link(onEvent2,3358455:doStrCat,[])
}
Add(InlineCode,4243737,210,385)
{
WorkPoints=#7:Convert|
EventPoints=#6:Result|
DataPoints=#6:Number|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|24: Number :THI_event;|24: Result :THI_event;|53: procedure Convert(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.Convert;|138:const Romans: Array[1..17] of String = ( 'I', 'IV', 'V', 'IX', 'X', 'XL','IL' ,'L', 'XC', 'IC', 'C', 'CD', 'ID', 'D', 'CM', 'IM', 'M' );|115: Arabics: Array[1..17] of Integer = ( 1, 4, 5, 9, 10, 40, 49, 50, 90, 99, 100, 400, 499, 500, 900, 999, 1000);|15:var i: Integer;|16: str: String;|21: Decimal: integer;|5:begin|42: Decimal := ReadInteger(_Data, Number);|14: str := '';|27: for i := 17 downto 1 do|47: while ( Decimal >= Arabics[i] ) do begin|42: Decimal := Decimal - Arabics[i];|33: str := str + Romans[i];|11: end;|29: _hi_onEvent(Result, str);|4:end;|0:|4:end.|
link(Result,1824510:doText,[])
link(Number,6388985:Text,[])
}
Add(Edit,1824510,448,385)
{
Left=110
Top=35
Width=85
Text=""
}
Add(InlineCode,3594571,448,441)
{
WorkPoints=#7:Convert|
EventPoints=#6:Result|
DataPoints=#6:Number|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|24: Number :THI_event;|24: Result :THI_event;|53: procedure Convert(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.Convert;|138:const Romans: Array[1..17] of String = ( 'I', 'IV', 'V', 'IX', 'X', 'XL','IL' ,'L', 'XC', 'IC', 'C', 'CD', 'ID', 'D', 'CM', 'IM', 'M' );|115: Arabics: Array[1..17] of Integer = ( 1, 4, 5, 9, 10, 40, 49, 50, 90, 99, 100, 400, 499, 500, 900, 999, 1000);|17:var i,p: Integer;|16: str: String;|21: Decimal: integer;|5:begin|37: str := ReadString(_Data, Number);|17: Decimal := 0;|12: i := 17;|11: p := 1;|35: while p <= Length(str) do begin|66: while Copy(str, p, Length(Romans[i])) <> Romans[i] do begin|17: Dec(i);|29: if i = 0 then exit;|11: end;|39: Decimal := Decimal + Arabics[i];|34: p := p + Length(Romans[i]);|8: end;|33: _hi_onEvent(Result, Decimal);|4:end;|0:|4:end.|
link(Result,14239851:doText,[])
link(Number,1824510:Text,[])
}
Add(Edit,14239851,518,441)
{
Left=110
Top=60
Width=85
Text=""
}


А с черточками непонятно, как это можно реализовать, у нас ведь нет надчеркивания, придется ограничиться 4999.

------------ Дoбавленo:


Так что, желающих закончить алгоритмизацию первой задачи нет?
Пойду , побъю компьютерные моськи, если через пару часов никто не доделает, закончу сам (для интереса).
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#17: 2008-02-09 20:23:47 ЛС | профиль | цитата
nesco, осталось разобраться - как написать 95, 195 и т.д.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5446
Рейтинг: 323
#18: 2008-02-09 20:27:53 ЛС | профиль | цитата
Ну, насколько я понимаю, 95 = XCV, 195 = CXCV...
карма: 1

0
Ответов: 1891
Рейтинг: 110
#19: 2008-02-09 21:48:07 ЛС | профиль | цитата
Вот примерчик и без IC
code_2123.txt
карма: 0
%time%
0
файлы: 1code_2123.txt [1.3KB] [417]
Разработчик
Ответов: 26066
Рейтинг: 2120
#20: 2008-02-09 21:57:16 ЛС | профиль | цитата
Alexbootch, ну да -- что VB, что IC, ни один ли черт. А у меня IC как альтернатива, а так на HiAsm'e.
карма: 22

0
Ответов: 1891
Рейтинг: 110
#21: 2008-02-09 22:10:35 ЛС | профиль | цитата
nesco, писал(а):
Alexbootch, ну да -- что VB, что IC, ни один ли черт. А у меня IC как альтернатива, а так на HiAsm'e.


А кто запрещал использовать VBJScript? Вроде стандарный компонент?

Насчет того, что бы написать то же самое без использования VBJScript - подсказка дана, т.е. кому нужно - напишут и на HiAsm
карма: 0
%time%
0
Ответов: 5446
Рейтинг: 323
#22: 2008-02-09 23:17:07 ЛС | профиль | цитата
Хм... Формально VBJScript не запрещён, но по духу - изя. Учту, когда следующий раз буду устраивать Contest. Вот моё решение поставленной задачи. Да, я несколько упростил себе жизнь - не стал делать проверку на корректность числа ("XCIX" - верная запись для 99, "IC" - нет).
code_8348.txt
------------ Дoбавленo:

А вот решение 2й задачи:
Add(MainForm,261286,-632,-504)
{
Left=20
Top=105
Caption="PhoneText"
}
Add(Edit,11486867,-219,-343)
{
Left=10
Top=5
Width=185
Enabled=1
}
Add(Memo,3440135,-23,-392)
{
Left=10
Top=30
Width=380
Height=225
ScrollBars=3
ReadOnly=0
}
Add(Edit,651326,817,658)
{
Left=225
Top=5
Width=165
}
Add(Button,12877360,-891,-497)
{
Left=200
Top=5
Width=20
Caption=">>"
link(onClick,10753013:doEvent1,[])
}
Add(Hub,13413367,754,623)
{
link(onEvent1,4653462:doWork,[])
link(onEvent2,651326:doText,[(802,636)(802,664)])
}
Add(For,3459248,-639,-175)
{
IncludeEnd=1
link(onEvent,4296373:doRead,[])
link(onStop,3114716:##clear,[(-588,-162)(-588,34)])
link(End,5014009:Value,[(-626,-271)(-388,-271)])
}
Add(Hub,15356389,-821,-441)
{
OutCount=7
link(onEvent1,883911:doLoad,[])
link(onEvent2,5449789:In,[(-759,-428)(-759,-456)])
link(onEvent3,16334326:doRead,[(-650,-421)(-650,-386)])
link(onEvent4,11177164:doRead,[(-661,-414)(-661,-330)])
link(onEvent5,3459248:doFor,[(-714,-407)(-714,-169)])
link(onEvent6,1188821:doWork2,[(-714,-400)(-714,83)])
link(onEvent7,13811653:In,[(-763,-393)(-763,-358)])
}
Add(StrList,883911,-590,-469)
{
FileName="Phone.in"
}
Add(Memory,5253348,-457,-392)
{
link(onData,13317756:doEvent1,[(-361,-386)(-361,-449)])
}
Add(Memory,5014009,-394,-336)
{
}
Add(ArrayRW,16334326,-576,-392)
{
Index=Integer(0)
link(onRead,5253348:doValue,[])
link(Array,14565126:Var2,[])
}
Add(ArrayRW,11177164,-534,-336)
{
Index=Integer(1)
link(onRead,5014009:doValue,[])
link(Array,4772141:Var2,[])
}
Add(GetDataEx,14565126,-583,-413)
{
link(Data,883911:Array,[])
}
Add(InfoTip,14610124,-471,-420)
{
Info=#7:Телефон|
Height=67
}
Add(InfoTip,1963231,-408,-364)
{
Info=#13:Длина словаря|
Height=67
}
Add(IntegerArray,1168404,-149,-224)
{
IntArray=['a'=2,'b'=2,'c'=2,'d'=3,'e'=3,'f'=3,'g'=4,'h'=4,'i'=1,'j'=1,'k'=5,'l'=5,'m'=6,'n'=6,'o'=0,'p'=7,'q'=0,'r'=7,'s'=7,'t'=8,'u'=8,'v'=8,'w'=9,'x'=9,'y'=9,'z'=0]
UseName=0
}
Add(ArrayRW,4296373,-485,-175)
{
link(onRead,13558003:doEvent1,[])
link(Array,4772141:Var3,[(-479,-355)])
link(Index,5913647:GetData,[(-472,-187)(-451,-187)])
}
Add(GetDataEx,4772141,-541,-364)
{
link(Data,14565126:Var3,[(-528,-404)])
}
Add(EventFromData,5913647,-457,-231)
{
link(onEvent,12513622:doOperation,[])
}
Add(LineBreakEx,15508692,-107,-350)
{
Caption="Log"
Type=1
link(OnEvent,3440135:doAdd,[(-46,-344)(-46,-386)])
}
Add(Math,12513622,-408,-231)
{
Op2=2
ResultType=0
link(onResult,5913647:doData,[(-364,-225)(-364,-237)(-469,-237)(-469,-225)])
link(Op1,3459248:Position,[(-402,-254)(-544,-254)(-544,-131)(-633,-131)])
}
Add(Hub,13558003,-359,-175)
{
OutCount=5
link(onEvent1,9905420:doValue,[(-294,-169)(-294,-260)])
link(onEvent2,5883764:doLoad,[(-283,-162)(-283,-211)])
link(onEvent3,14650723:doClear,[])
link(onEvent5,13243599:doEnum,[(-283,-141)(-283,-92)])
}
Add(LineBreakEx,2128213,292,294)
{
Caption="Log"
}
Add(Memory,9905420,-240,-266)
{
}
Add(CharArray,5883764,-240,-217)
{
link(String,9905420:Value,[])
}
Add(ArrayEnum,13243599,-240,-98)
{
link(onItem,15610682:doRead,[])
link(onEndEnum,6696629:doAdd,[(-188,-85)(-188,-30)(-10,-30)(-10,-64)])
link(Array,5883764:Array,[])
}
Add(ArrayRW,15610682,-149,-98)
{
link(onRead,2654949:doStrCat,[])
link(Array,1168404:Array,[])
}
Add(Memory,14650723,-9,-168)
{
Default=String()
}
Add(StrCat,2654949,-79,-98)
{
link(onStrCat,14650723:doValue,[(-28,-92)(-28,-162)])
link(Str1,10490685:Var1,[(-73,-110)])
}
Add(StrList,6696629,159,-70)
{
@Hint=#24:Перекодированный словарь|
link(Str,10490685:Var2,[(165,-88)(-3,-88)])
}
Add(GetDataEx,10490685,-16,-119)
{
link(Data,14650723:Value,[])
}
Add(GlobalVar,6097192,-198,-406)
{
Name="Phone"
}
Add(ArrayEnum,15107863,138,399)
{
link(onItem,4979771:doEvent1,[])
link(onEndEnum,9436757:In,[(186,412)(186,468)])
link(Array,3935705:Var2,[])
}
Add(Trim,14560813,705,623)
{
Char=" "
link(onTrim,13413367:doEvent1,[])
}
Add(Hub,13317756,-296,-455)
{
OutCount=3
link(onEvent1,1782333:doWork,[(-242,-449)(-242,-456)])
link(onEvent2,6097192:doValue,[(-231,-442)(-231,-400)])
link(onEvent3,11486867:doText,[(-242,-435)(-242,-337)])
}
Add(LineBreak,7878283,47,308)
{
Caption="ClrList"
link(Out,12543684:doClear,[(101,314)(101,307)])
Primary=[5449789,-777,-770]
}
Add(Hub,10753013,-828,-497)
{
OutCount=4
link(onEvent1,5150751:doStart,[])
link(onEvent2,15356389:doEvent1,[(-784,-484)(-784,-460)(-833,-460)(-833,-435)])
link(onEvent4,5150751:doStop,[(-746,-470)(-746,-484)])
}
Add(TimeCounter,5150751,-695,-497)
{
link(onStop,261286:doCaption,[(-647,-484)(-647,-498)])
}
Add(StrList,12543684,124,294)
{
@Hint=#19:Хранилище вариантов|
link(Str,3483630:Var3,[(130,212)])
}
Add(MultiElementEx,3114716,-569,21)
{
Mode=1
link(onWord,14656686:doEvent1,[])
link(onNoWord,4069836:doEvent1,[(-516,34)(-516,104)])
link(onDone,3440925:In,[(-529,41)(-529,118)])
link(NewDict,5364651:Var1,[(-563,2)])
link(Pos,1451002:Value,[(-556,-5)(-318,-5)])
}
BEGIN_SDK
Pos(2,0)
Add(EditMultiEx,6097579,19,21)
{
WorkCount=#5:##add|7:##clear|9:##hdelete|
EventCount=#6:onWord|8:onNoWord|6:onDone|
VarCount=#13:##eventHandle|
DataCount=#7:NewDict|3:Pos|
Width=867
Height=564
Point(##add)
Point(##clear)
Point(##hdelete)
Point(##eventHandle)
link(##add,12972761:doEvent1,[(47,27)(47,83)])
}
Add(GlobalVar,6097192,194,35)
{
Name="Phone"
}
Add(ArrayEnum,7396930,33,189)
{
link(onItem,12905215:doEvent1,[(95,195)(95,132)])
link(onEndEnum,6097579:onNoWord,[(490,202)(490,34)])
link(Array,6097579:NewDict,[(39,105)(25,105)])
}
Add(Hub,12905215,124,126)
{
link(onEvent1,4790727:doLength,[(196,132)(196,195)])
link(onEvent2,15055374:doCompare,[(186,139)(186,258)])
}
Add(Copy,9200133,523,371)
{
link(onCopy,3555780:doValue,[])
link(Str,6820122:Var3,[(529,65)])
link(Position,14855270:Var2,[(536,195)(375,195)])
link(Count,11339734:Var2,[(543,255)(382,255)])
}
Add(Length,4790727,236,189)
{
link(onLength,14249734:doOperation,[])
}
Add(If_else,9226192,509,448)
{
link(onTrue,4570366:doEvent1,[])
link(Op1,3691365:Data,[(515,370)(319,370)])
link(Op2,3555780:Value,[(522,426)(585,426)])
}
Add(Memory,3555780,579,371)
{
}
Add(If_else,15055374,215,252)
{
Type=1
link(onFalse,13727431:doCompare,[])
link(Op1,6372545:Var2,[])
link(Op2,15662603:Var1,[(228,240)])
}
Add(Math,14249734,285,189)
{
ResultType=0
link(Op2,12206950:Var2,[])
}
Add(GetDataEx,12206950,285,98)
{
Angle=3
link(Data,6097579:Pos,[(32,107)])
}
Add(Hub,12972761,54,77)
{
OutCount=3
link(onEvent1,14049275:doLength,[])
link(onEvent2,7396930:doEnum,[(98,90)(98,142)(21,142)(21,195)])
}
Add(Length,14049275,159,77)
{
link(onLength,7842586:doOperation,[])
link(Str,6820122:Var1,[(165,65)])
}
Add(GetDataEx,6820122,187,56)
{
link(Data,6097192:Var,[])
}
Add(Hub,339423,425,371)
{
link(onEvent1,9200133:doCopy,[])
link(onEvent2,9226192:doCompare,[(487,384)(487,454)])
}
Add(Math,7219575,719,448)
{
ResultType=0
link(Op1,14855270:Var3,[(725,128)])
link(Op2,11339734:Var3,[(732,247)])
}
Add(GetDataEx,14855270,362,119)
{
link(Data,12206950:Var3,[(375,107)])
}
Add(GetDataEx,11339734,369,238)
{
link(Data,4790727:Result,[(382,232)(242,232)])
}
Add(MT_Add,15261910,719,518)
{
link(onAdd,2275165:doCompare,[])
link(Data,7219575:Result,[])
}
Add(Hub,4570366,572,448)
{
link(onEvent1,7219575:doOperation,[])
link(onEvent2,1734629:doData,[(620,461)(620,524)])
}
Add(If_else,13727431,264,259)
{
link(onTrue,3691365:doWork1,[])
link(onFalse,3691365:doWork2,[])
link(Op1,15662603:Var2,[])
link(Op2,6372545:Var3,[(277,135)])
}
Add(Math,7842586,215,77)
{
Op2=1
ResultType=0
}
Add(GetDataEx,15662603,257,231)
{
Angle=1
link(Data,14249734:Result,[(291,240)])
}
Add(Hub,14446439,362,259)
{
link(onEvent1,9304417:doValue,[])
link(onEvent2,339423:doEvent1,[(410,272)(410,377)])
}
Add(ChanelToIndex,3691365,313,259)
{
Point(Data)
link(onIndex,14446439:doEvent1,[])
}
Add(Memory,9304417,474,259)
{
}
Add(If_else,2275165,775,518)
{
Op2=Integer(1)
link(onTrue,6097579:onWord,[(822,524)(822,27)])
link(onFalse,6097579:onDone,[(830,531)(830,41)])
link(Op1,9304417:Value,[(781,432)(480,432)])
}
Add(DoData,1734629,635,518)
{
link(onEventData,15261910:doAdd,[])
link(Data,7396930:Index,[(641,343)(46,343)])
}
Add(GetDataEx,6372545,208,126)
{
link(Data,7842586:Result,[])
}
END_SDK
Add(Stack,1451002,-324,-63)
{
Default=Integer(1)
IgnorEmpty=1
}
Add(Hub,14656686,-506,21)
{
link(onEvent1,12287210:doWork2,[])
link(onEvent2,1188821:doWork3,[(-466,34)(-466,96)(-635,96)])
}
Add(HubEx,1188821,-639,70)
{
link(onEvent,3114716:##add,[(-600,83)(-600,27)])
}
Add(Hub,4069836,-450,98)
{
OutCount=3
link(onEvent1,1451002:doPop,[(-371,104)(-371,-50)])
link(onEvent2,8086871:doWork2,[(-329,111)(-329,41)])
link(onEvent3,3978614:doData,[(-392,118)(-392,139)])
}
Add(HubEx,12287210,-464,14)
{
link(onEvent,14106977:doGet,[])
}
Add(DoData,3978614,-366,133)
{
link(onEventData,4831041:doValue,[])
link(Data,3114716:##eventHandle,[(-360,88)(-563,88)])
}
Add(Thread,16366165,-198,133)
{
Delay=0
FastStop=0
link(onExec,7368388:doData,[])
}
Add(Memory,4831041,-282,133)
{
link(onData,16366165:doStart,[])
}
Add(DoData,7368388,-135,133)
{
link(onEventData,3114716:##hdelete,[(-91,139)(-91,90)(-581,90)(-581,41)])
link(Data,4831041:Value,[(-129,121)(-213,121)(-213,177)(-276,177)])
}
Add(MT_Get,14106977,-443,21)
{
link(onData,1451002:doPush,[(-355,27)(-355,-57)])
link(onGet,8086871:doWork1,[])
}
Add(LineBreak,11285943,-583,217)
{
Caption="Done"
link(Out,311187:doEvent1,[])
Primary=[3440925,63,-105]
}
Add(Hub,311187,-506,217)
{
OutCount=3
link(onEvent1,12287210:doWork3,[(-460,223)])
link(onEvent2,14554258:doClear,[(-336,230)(-336,181)])
link(onEvent3,13663161:doEnum,[(-406,237)(-406,244)])
}
Add(MultiElement,8086871,-240,28)
{
@Hint=#7:@Stack@|5:#push|4:#pop|
}
BEGIN_SDK
Add(EditMulti,4269318,21,21)
{
WorkCount=2
VarCount=1
Width=496
Height=340
link(doWork1,1492520:doAdd,[(115,27)(115,69)])
link(doWork2,278045:doOperation,[(45,34)(45,153)])
link(Var1,1492520:Array,[(27,198)(230,198)])
}
Add(StrList,1492520,210,63)
{
}
Add(Math,278045,70,147)
{
OpType=1
Op2=1
ResultType=0
link(onResult,1492520:doDelete,[(156,153)(156,83)])
link(Op1,1492520:Count,[(76,127)(223,127)])
}
END_SDK
Add(ArrayEnum,13663161,-338,238)
{
link(onItem,493253:doEvent1,[])
link(onEndEnum,12543684:doAdd,[(-267,251)(-267,300)])
link(Array,8086871:Var1,[(-332,199)(-234,199)])
}
Add(Memory,14554258,61,168)
{
Default=String()
}
Add(GetDataEx,3483630,54,203)
{
link(Data,14554258:Value,[])
}
Add(FormatStr,8749986,-30,238)
{
link(onFString,14554258:doValue,[(53,244)(53,174)])
link(Str1,3483630:Var1,[(-24,212)])
}
Add(LineBreak,7897128,-86,399)
{
Caption="RecursionDone"
link(Out,178489:doCompare,[])
Primary=[13811653,-651,-763]
}
Add(LineBreak,13703579,-639,-301)
{
Caption="BigDict"
Type=1
link(Data,14565126:Var1,[(-633,-404)])
Primary=[530994,511,483]
}
Add(Hub,493253,-261,238)
{
link(onEvent1,3504976:doOperation,[])
}
Add(Math,3504976,-191,238)
{
Op2=2
ResultType=0
link(onResult,3313755:doRead,[])
}
Add(ArrayRW,3313755,-128,238)
{
link(onRead,8749986:doString,[])
link(Array,530994:Var,[])
}
Add(ArrayRW,10211637,-114,336)
{
link(Array,5364651:Var2,[(-108,280)(4,280)])
}
Add(GetDataEx,5364651,-9,-7)
{
Angle=1
link(Data,6696629:Array,[(179,2)])
}
Add(LineBreakEx,1782333,-219,-462)
{
Caption="Log"
}
Add(LineBreakEx,4653462,817,623)
{
Caption="Log"
}
Add(Hub,4979771,236,399)
{
OutCount=5
link(onEvent2,3801085:doClear,[(312,412)(312,321)])
link(onEvent3,9415158:doReset,[(291,419)(291,440)])
link(onEvent4,9415158:doSearch,[(304,426)(304,433)])
link(onEvent5,5692304:doCompare,[(281,433)(281,538)])
}
Add(If_else,178489,33,399)
{
Type=2
Op2=Integer(0)
link(onTrue,15107863:doEnum,[])
link(onFalse,3198827:doData,[(81,412)(81,482)])
link(Op1,12543684:Count,[(39,369)(137,369)])
}
Add(LineBreakEx,8385267,145,476)
{
Caption="Log"
}
Add(DoData,3198827,96,476)
{
Data=String(NONUMBER)
link(onEventData,8385267:doWork,[])
}
Add(Math,5773541,390,427)
{
Op2=1
link(onResult,3801085:doValue,[(452,433)(452,314)])
link(Op1,13149634:Var1,[(396,401)])
}
Add(Memory,3801085,481,308)
{
Default=Integer(0)
}
Add(Position,9415158,341,427)
{
Target=" "
Point(doReset)
link(onSearch,5773541:doOperation,[])
}
Add(Memory,13945962,642,308)
{
Default=Integer(0)
}
Add(If_else,5692304,467,532)
{
Type=1
link(onTrue,7666507:doWork3,[(506,538)])
link(onFalse,5955840:doCompare,[])
link(Op1,5735048:Var2,[])
link(Op2,1923287:Var2,[(480,514)(529,514)])
}
Add(GetDataEx,13149634,460,392)
{
Angle=1
link(Data,3801085:Value,[(487,401)])
}
Add(If_else,5955840,544,539)
{
Op2=Integer(0)
link(onTrue,5800340:doData,[])
link(Op1,1923287:Var3,[(550,492)])
}
Add(GetDataEx,5735048,460,427)
{
link(Data,13149634:Var2,[])
}
Add(GetDataEx,1923287,516,483)
{
link(Data,13945962:Value,[(529,462)(648,462)])
}
Add(DoData,5800340,600,539)
{
link(onEventData,7666507:doWork1,[(644,545)(644,482)])
link(Data,5735048:Var3,[(606,436)])
}
Add(HubEx,7666507,502,469)
{
Angle=3
link(onEvent,4039062:doEvent1,[(506,398)])
}
Add(Memory,10801650,677,399)
{
}
Add(Hub,4039062,551,392)
{
link(onEvent1,13945962:doValue,[(619,398)(619,314)])
link(onEvent2,5593024:doData,[])
}
Add(DoData,5593024,621,399)
{
link(onEventData,10801650:doValue,[])
link(Data,15107863:Index,[(627,384)(204,384)(204,443)(151,443)])
}
Add(LineBreak,13227165,586,623)
{
Caption="Finish"
link(Out,10692049:doRead,[])
Primary=[9436757,-385,-161]
}
Add(ArrayRW,10692049,656,623)
{
link(onRead,14560813:doTrim,[])
link(Array,3935705:Var3,[(662,366)])
link(Index,10801650:Value,[(669,527)(683,527)])
}
Add(GetDataEx,3935705,131,357)
{
link(Data,12543684:Array,[])
}
------------ Дoбавленo:

Кто-нить решил 3ю задачу?
карма: 1

0
файлы: 1code_8348.txt [8.5KB] [887]
Разработчик
Ответов: 26066
Рейтинг: 2120
#23: 2008-02-09 23:58:07 ЛС | профиль | цитата
А вот окончательный релиз конвертора DecimalToRoman/RomanToDecimal в двух вариантах (компоненты HiAsm и IC)



Add(MainForm,280613,167,87)
{
Left=20
Top=105
Width=221
Height=177
Caption="DecimalToRoman"
Position=1
}
Add(IntegerArray,5682974,307,87)
{
IntArray=['M'=1000,'IM'=999,'CM'=900,'D'=500,'ID'=499,'CD'=400,'C'=100,'IC'=99,'XC'=90,'L'=50,'IL'=49,'Xl'=40,'X'=10,'IX'=9,'V'=5,'IV'=4,'I'=1]
FileFormat=1
}
Add(Memory,237103,657,325)
{
Default=String()
}
Add(Hub,12748134,167,311)
{
OutCount=3
link(onEvent1,15352514:doWork,[])
link(onEvent2,13350876:doEnum,[])
link(onEvent3,6302184:doWork,[])
}
Add(StrCat,3358455,580,325)
{
link(onStrCat,237103:doValue,[])
link(Str1,237103:Value,[(586,313)(624,313)(624,369)(663,369)])
link(Str2,13350876:Item,[(593,322)(299,322)])
}
Add(Memory,1401807,419,234)
{
}
Add(Repeat,13396544,419,318)
{
Type=4
link(onRepeat,16756407:doOperation,[])
link(Op1,7377394:Var2,[])
link(Op2,876903:Var2,[])
}
Add(Math,16756407,475,318)
{
OpType=1
ResultType=0
link(onResult,16357683:doEvent1,[])
link(Op1,7377394:Var3,[(481,278)])
link(Op2,876903:Var3,[(488,292)])
}
Add(ArrayRW,8141205,356,318)
{
Point(Count)
link(onRead,13396544:doRepeat,[])
link(Array,8250339:getVar,[])
link(Index,13350876:Index,[(369,306)(337,306)(337,362)(306,362)])
}
Add(Edit,6388985,363,87)
{
Left=20
Top=10
Width=85
Text=""
DataType=1
link(onChange,4489149:doWork,[])
}
Add(Edit,2067103,580,388)
{
Left=110
Top=10
Width=85
Text=""
link(Str,3358455:Result,[])
}
Add(Button,1396319,307,31)
{
Left=80
Top=115
Caption="Convert"
link(onClick,1708955:doEvent1,[])
}
Add(StrList,6645552,230,73)
{
Strings=#1:M|2:IM|2:CM|1:D|2:ID|2:CD|1:C|2:IC|2:XC|1:L|2:IL|2:XL|1:X|2:IX|1:V|2:IV|1:I|
}
Add(ArrayEnum,13350876,293,318)
{
link(onItem,8141205:doRead,[])
link(onEndEnum,2067103:doText,[(346,331)(346,394)])
link(Array,15473903:getVar,[])
}
Add(GetDataEx,7377394,412,269)
{
link(Data,1401807:Value,[])
}
Add(LineBreakEx,7356317,356,234)
{
Caption="Dec"
Type=1
link(OnEvent,1401807:doValue,[])
}
Add(LineBreakEx,8502049,580,283)
{
Caption="Dec"
}
Add(Hub,16357683,524,318)
{
link(onEvent1,8502049:doWork,[(568,324)(568,289)])
link(onEvent2,3358455:doStrCat,[])
}
Add(InlineCode,4243737,678,220)
{
WorkPoints=#7:Convert|
EventPoints=#6:Result|
DataPoints=#6:Number|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|24: Number :THI_event;|24: Result :THI_event;|53: procedure Convert(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.Convert;|138:const Romans: Array[1..17] of String = ( 'I', 'IV', 'V', 'IX', 'X', 'XL','IL' ,'L', 'XC', 'IC', 'C', 'CD', 'ID', 'D', 'CM', 'IM', 'M' );|115: Arabics: Array[1..17] of Integer = ( 1, 4, 5, 9, 10, 40, 49, 50, 90, 99, 100, 400, 499, 500, 900, 999, 1000);|15:var i: Integer;|16: str: String;|21: Decimal: integer;|5:begin|42: Decimal := ReadInteger(_Data, Number);|14: str := '';|27: for i := 17 downto 1 do|47: while ( Decimal >= Arabics[i] ) do begin|42: Decimal := Decimal - Arabics[i];|33: str := str + Romans[i];|11: end;|29: _hi_onEvent(Result, str);|4:end;|0:|4:end.|
link(Result,1824510:doText,[])
link(Number,8132991:getVar,[])
}
Add(Edit,1824510,748,220)
{
Left=110
Top=35
Width=85
Text=""
}
Add(InlineCode,3594571,685,479)
{
WorkPoints=#7:Convert|
EventPoints=#6:Result|
DataPoints=#6:Number|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|24: Number :THI_event;|24: Result :THI_event;|53: procedure Convert(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.Convert;|138:const Romans: Array[1..17] of String = ( 'I', 'IV', 'V', 'IX', 'X', 'XL','IL' ,'L', 'XC', 'IC', 'C', 'CD', 'ID', 'D', 'CM', 'IM', 'M' );|115: Arabics: Array[1..17] of Integer = ( 1, 4, 5, 9, 10, 40, 49, 50, 90, 99, 100, 400, 499, 500, 900, 999, 1000);|17:var i,p: Integer;|16: str: String;|21: Decimal: integer;|5:begin|37: str := ReadString(_Data, Number);|17: Decimal := 0;|12: i := 17;|11: p := 1;|35: while p <= Length(str) do begin|66: while Copy(str, p, Length(Romans[i])) <> Romans[i] do begin|17: Dec(i);|29: if i = 0 then exit;|11: end;|39: Decimal := Decimal + Arabics[i];|34: p := p + Length(Romans[i]);|8: end;|33: _hi_onEvent(Result, Decimal);|4:end;|0:|4:end.|
link(Result,14239851:doText,[])
link(Number,14016710:getVar,[])
}
Add(Edit,14239851,748,479)
{
Left=110
Top=60
Width=85
Text=""
}
Add(LineBreakEx,14016710,685,451)
{
Caption="StrRom"
Type=2
}
Add(Length,7484826,258,570)
{
link(onLength,8230647:doRepeat,[])
link(Str,14307849:getVar,[])
}
Add(Repeat,8230647,314,570)
{
Type=3
link(onRepeat,1538578:doEnum,[])
link(Op1,11781999:Var2,[])
link(Op2,7484826:Result,[(327,558)(295,558)(295,614)(264,614)])
}
Add(Memory,9395163,314,486)
{
Default=Integer(1)
}
Add(Hub,12759300,167,556)
{
OutCount=5
link(onEvent1,9395163:doClear,[(257,562)(257,499)])
link(onEvent2,8487285:doWork,[])
link(onEvent3,7484826:doLength,[])
link(onEvent4,10987321:doText,[(229,583)(229,660)])
link(onEvent5,13896192:doWork,[(207,590)(207,632)])
}
Add(Edit,10987321,769,654)
{
Left=110
Top=85
Width=85
Text=""
link(Str,13054264:Var2,[])
}
Add(Copy,16245248,475,570)
{
link(onCopy,14355915:doCompare,[])
link(Str,2328923:getVar,[])
link(Position,9731661:Var2,[])
}
Add(Length,5631301,419,570)
{
link(onLength,16245248:doCopy,[])
}
Add(ArrayEnum,1538578,370,570)
{
link(onItem,5631301:doLength,[])
link(Array,5023251:getVar,[])
}
Add(LineBreakEx,1666871,643,521)
{
Caption="Arabic"
Type=2
}
Add(Hub,15513633,580,570)
{
OutCount=3
link(onEvent1,1538578:doStop,[(625,576)(625,632)(358,632)(358,583)])
link(onEvent2,14514076:doRead,[])
link(onEvent3,1116868:doOperation,[(631,590)(631,632)])
}
Add(If_else,14355915,531,570)
{
link(onTrue,15513633:doEvent1,[])
link(Op2,1538578:Item,[(544,558)(460,558)(460,614)(376,614)])
}
Add(Memory,5910536,769,577)
{
Default=Integer(0)
}
Add(LineBreakEx,2328923,475,521)
{
Caption="StrRom"
Type=2
}
Add(ArrayRW,14514076,643,577)
{
link(onRead,10078912:doOperation,[])
link(Array,1666871:getVar,[])
link(Index,1538578:Index,[(656,565)(520,565)(520,614)(383,614)])
}
Add(LineBreakEx,5023251,370,521)
{
Caption="Roman"
Type=2
}
Add(Math,10078912,713,577)
{
ResultType=0
link(onResult,5910536:doValue,[])
link(Op2,13054264:Var1,[(726,565)(748,565)(748,635)])
}
Add(Math,1116868,664,626)
{
ResultType=0
link(onResult,10253534:doWork,[])
link(Op1,9731661:Var3,[(670,544)])
link(Op2,5631301:Result,[(677,614)(425,614)])
}
Add(GetDataEx,11781999,307,535)
{
link(Data,9395163:Value,[])
}
Add(GetDataEx,9731661,475,535)
{
Angle=3
link(Data,11781999:Var3,[])
}
Add(LineBreakEx,606743,601,220)
{
Caption="Rom_02"
Type=1
link(OnEvent,4243737:Convert,[])
}
Add(LineBreakEx,14307849,258,521)
{
Caption="StrRom"
Type=2
}
Add(LineBreakEx,10253534,713,626)
{
Caption="_1"
}
Add(LineBreakEx,8119094,265,486)
{
Caption="_1"
Type=1
link(OnEvent,9395163:doValue,[])
}
Add(LineBreakEx,6356703,244,136)
{
Caption="Roman"
Type=3
link(_Data,6645552:Array,[])
}
Add(LineBreakEx,15473903,293,283)
{
Caption="Roman"
Type=2
}
Add(LineBreakEx,5333485,307,136)
{
Caption="Arabic"
Type=3
link(_Data,5682974:Array,[])
}
Add(LineBreakEx,8250339,356,283)
{
Caption="Arabic"
Type=2
}
Add(LineBreakEx,6302184,223,325)
{
Caption="Rom_02"
}
Add(LineBreakEx,3859516,720,521)
{
Caption="_5"
Type=2
}
Add(LineBreakEx,10524378,48,556)
{
Caption="RomToDec"
Type=1
link(OnEvent,12759300:doEvent1,[])
}
Add(LineBreakEx,1041828,412,38)
{
Caption="RomToDec"
}
Add(LineBreakEx,12122834,748,262)
{
Caption="StrRom"
Type=3
link(_Data,1824510:Text,[])
}
Add(LineBreakEx,10752741,713,612)
{
Caption="_2"
Type=1
link(OnEvent,5910536:doClear,[(757,618)(757,590)])
}
Add(LineBreakEx,8487285,216,563)
{
Caption="_2"
}
Add(LineBreakEx,15352514,223,311)
{
Caption="_9"
}
Add(LineBreakEx,5476782,580,367)
{
Caption="_9"
Type=1
link(OnEvent,237103:doClear,[(634,373)(634,338)])
}
Add(LineBreakEx,8045646,363,136)
{
Caption="StrDec"
Type=3
link(_Data,6388985:Text,[])
}
Add(LineBreakEx,8132991,678,192)
{
Caption="StrDec"
Type=2
}
Add(LineBreakEx,13244240,608,479)
{
Caption="Dec_02"
Type=1
link(OnEvent,3594571:Convert,[])
}
Add(LineBreakEx,13896192,216,626)
{
Caption="Dec_02"
}
Add(LineBreakEx,4489149,412,87)
{
Caption="Dec"
}
Add(GetDataEx,876903,419,283)
{
Angle=3
link(Data,8141205:Item,[(395,292)(395,362)(362,362)])
}
Add(InfoTip,8355087,139,178)
{
Info=#0:|14:DecimalToRoman|
Font=[MS Sans Serif,10,1,8388608,1]
Frame=3
Width=680
Height=256
}
Add(InfoTip,871259,139,444)
{
Info=#0:|14:RomanToDecimal|
Font=[MS Sans Serif,10,1,128,1]
Frame=3
Width=680
Height=270
}
Add(Hub,1708955,356,31)
{
link(onEvent1,9762113:doWork,[(400,37)(400,30)])
link(onEvent2,1041828:doWork,[])
}
Add(LineBreakEx,4575409,48,311)
{
Caption="DecToRom"
Type=1
link(OnEvent,12748134:doEvent1,[])
}
Add(LineBreakEx,9762113,412,24)
{
Caption="DecToRom"
}
Add(GetDataEx,13054264,762,626)
{
link(Data,5910536:Value,[])
}


------------ Дoбавленo:


iarspider писал(а):
"XCIX" - верная запись для 99, "IC" - нет
Не понял, это что, Tad ошибся, что ли? Он то, должен лучше знать.
------------ Дoбавленo:

iarspider писал(а):
Кто-нить решил 3ю задачу?
Ты бы матрицы коров выложил для чистоты эксперимента, их что самому выдумывать, что ли
------------ Дoбавленo:

iarspider, ты следующий раз укомплектовывай задачи начальными данными и упрости постановку задачи конкретным алгоритмом с простым выводом данных, и не в файл, а на экран, так гораздо проще и понятнее будет.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#24: 2008-02-10 00:06:05 ЛС | профиль | цитата
http://spravki.net.ru/spravki/rimski.htm

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 899
Рейтинг: 43
#25: 2008-02-10 00:24:01 ЛС | профиль | цитата
Вот по коровам - черновичок code_2124.txt
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_2124.txt [2.9KB] [426]
Ответов: 16884
Рейтинг: 1239
#26: 2008-02-10 00:33:15 ЛС | профиль | цитата
iarspider писал(а):
Ну, насколько я понимаю, 95 = XCV
а римляне иногда писАли "VC" (95)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#27: 2008-02-10 01:26:32 ЛС | профиль | цитата
Tad писал(а):
а римляне иногда писАли "VC"
Но так "иногда". Я без проблем могу это воткнуть в код, но надо ли? Так можно упростить и 45 (VL), и 95 (VC), и 450 (LD), и 490 (XD), и 495 (VD), и 950 (LM), 990 (XM), и 995 (VM)
Вопрос -- это допустимо, и не будет ли от этого путаница в общепринятом понимании, ведь все числа, приведенные по ссылке, конвертируются нормально, и про 95 там ничего нет?

------------ Дoбавленo:


Tad, ты вот про 95 мявкнул, а ссылку на источник дать забыл. Доказательства в студию, только ссылки на диссертации не предлагать. Если это известно только в узких исторических кругах, то оно нам, явно не подходит -- нужен универсальный, общепринятый алгоритм.
карма: 22

0
Ответов: 5446
Рейтинг: 323
#28: 2008-02-10 10:15:18 ЛС | профиль | цитата
Матрицы коров генерятся ленератором случайных чисел в любых количествах Если, конечно, сгенерить сотню, то замучаешься проверять работу машины. А вот на десятке по-моему, вполне можно проверить. Ну ладно, выложу тестовые матрицы, но позже.
------------ Дoбавленo:

nesco писал(а):
iarspider, ты следующий раз укомплектовывай задачи начальными данными и упрости постановку задачи конкретным алгоритмом с простым выводом данных, и не в файл, а на экран, так гораздо проще и понятнее будет.


Не понял несколько постановку фразы. Секция потому "Алгоритмы" и названа, что предполагает как придумывание, так и реализацию алгоритма, реализующего решение задачи. А если я буду выкладывать готовый алгоритм - это не будет соответствовать духу секции.
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#29: 2008-02-10 15:34:28 ЛС | профиль | цитата
iarspider писал(а):
А если я буду выкладывать готовый алгоритм
Да не не надо выкладывать готовый алоритм. Например, в певой задаче нужно было просто написать -- необходимо сделать конвертор чисел из Арабской системы счисления в Римскую с контролем правильности ввода, и все, остальное там нафиг не нужно. Куда чел выведет готовый результат, ну никак, на этот самый результат, не повлияет, да и сложно это для среднего пользователя. Результат налицо -- кто решил до конца, хотябы одну, задачу
Ну вот не хотел лезть в судейство, опять бес попутал

------------ Дoбавленo:


Tad, вот, что я нашел

Википедия писал(а):
Существует «сокращённый способ» для записи больших чисел, таких как 1999. Он не рекомендуется, но иногда используется для упрощения. Отличие состоит в том, что для уменьшения цифры слева от неё может писаться любая цифра:
999. Тысяча M, вычтем 1 (I), получим 999 (IM) вместо CMXCIX. Следствие: 1999 — MIM вместо MCMXCIX
95. Сто C, вычтем 5 (V), получим 95 (VC) вместо XCV
1950: тысяча M, вычтем 50 (L), получим 950 (LM). Следствие: 1950 — MLM вместо MCML


Так что, из конвертора IntToRom необходимо выкинуть сокращения, а вот в конверторе RomToInt это можно сделать, чтобы конвертировать любую последовательность Римский чисел.

------------ Дoбавленo:


Tad писал(а):
Тысячу можно было написать и буквой "М" и буквой "I" с горизонтальной линией сверху.
А "XL" с горизонтальной линией сверху - это уже 40 000
Считаю не верным, я не вижу ссылки на источник, а вот, что говорит источник, который доступен для всех http://ru.wikipedia.org/wiki/Римские_цифры

Википедия писал(а):
У других авторов черта сверху могла обозначать увеличение значения цифры в 1000 раз
Я не считаю "других авторов" поводом для подражания и руководством к действию.



------------ Дoбавленo:


Добавил два метода конвертации IntToRom (Standard Algorithm) и RomToInt (Extended Algorithm) в штатный конвертор (доступен на SVN).

[svn]Convertor.pas[/svn]

------------ Дoбавленo:


Ага, а вот и кусок второй задачи -- алгоритм определения соответствия матрицы пятен:



Add(MainForm,6168812,77,119)
{
Left=20
Top=105
Width=296
Height=281
Position=1
link(onCreate,10511176:doEvent1,[])
}
Add(ArrayEnum,11530578,217,140)
{
link(onItem,12950487:doConvert,[])
link(onEndEnum,9387158:doEnum,[(261,153)(261,219)(205,219)(205,286)])
link(Array,533869:Array,[])
}
Add(StrList,10534379,343,140)
{
}
Add(ListBox,533869,203,70)
{
Left=10
Top=35
Width=130
Height=155
TabOrder=-1
Strings=#7:0010000|7:0111000|7:0110000|7:0000010|7:0100010|
}
Add(Convertor,12950487,273,140)
{
Mode=7
link(onResult,10534379:doAdd,[])
}
Add(StrList,1659569,343,280)
{
}
Add(ListBox,2303860,203,203)
{
Left=145
Top=35
Width=130
Height=155
TabOrder=-1
Strings=#7:0001000|7:0011000|7:0110000|7:0110010|7:0100010|
}
Add(ArrayEnum,9387158,217,280)
{
link(onItem,15685451:doConvert,[])
link(onEndEnum,2361031:doEnum,[(303,293)(303,216)])
link(Array,2303860:Array,[])
}
Add(Convertor,15685451,273,280)
{
Mode=7
link(onResult,1659569:doAdd,[])
}
Add(ArrayEnum,2361031,357,210)
{
link(onItem,1185272:doRead,[(401,216)(401,286)(345,286)(345,356)])
link(onEndEnum,12521979:doData,[(411,223)(411,363)])
link(Array,10534379:Array,[])
}
Add(ArrayRW,1185272,357,350)
{
link(onRead,12521979:doOperation1,[])
link(Array,1659569:Array,[])
link(Index,2361031:Index,[])
}
Add(Edit,15479895,518,343)
{
Left=160
Top=195
Width=30
Text=""
}
Add(MultiElementEx,12521979,434,343)
{
@Hint=#11:Coincidence|
link(Op2,2361031:Item,[(440,307)(363,307)])
link(onEventData,15479895:doText,[])
link(onResult,1846163:doText,[(492,356)(492,391)])
}
BEGIN_SDK
Add(EditMultiEx,16634185,21,21)
{
WorkCount=#11:doOperation|12:doOperation1|6:doData|
EventCount=#11:onEventData|8:onResult|
DataCount=#3:Op2|
Width=671
Height=396
link(doOperation,10001985:doClear,[(269,27)(269,97)])
link(doOperation1,5611236:doOperation,[(35,34)(35,97)])
link(doData,1227567:doEvent1,[(245,41)(245,209)])
}
Add(Math,5611236,49,91)
{
OpType=6
ResultType=0
link(onResult,804334:doEvent1,[])
link(Op2,16634185:Op2,[(62,60)(27,60)])
}
Add(Math,5185660,210,105)
{
OpType=4
Op2=1
ResultType=0
link(onResult,16518593:doWork2,[])
}
Add(Math,5747908,210,147)
{
OpType=4
Op2=2
ResultType=0
link(onResult,4825510:doWork2,[])
}
Add(Math,14568447,210,189)
{
OpType=4
Op2=4
ResultType=0
link(onResult,4100386:doWork2,[])
}
Add(Math,10160459,210,231)
{
OpType=4
Op2=8
ResultType=0
link(onResult,9341604:doWork2,[])
}
Add(Math,11286906,210,273)
{
OpType=4
Op2=16
ResultType=0
link(onResult,10303122:doWork2,[])
}
Add(Math,5926633,210,315)
{
OpType=4
Op2=32
ResultType=0
link(onResult,14950443:doWork2,[])
}
Add(Math,15655080,210,357)
{
OpType=4
Op2=64
ResultType=0
link(onResult,14950443:doWork3,[(333,363)])
}
Add(Memory,3959368,441,49)
{
Default=Integer(0)
}
Add(Math,7601361,434,105)
{
Op1=1
ResultType=0
link(onResult,3959368:doValue,[(478,111)(478,83)(429,83)(429,55)])
link(Op2,6201972:Var2,[])
}
Add(HubEx,16518593,329,98)
{
link(onEvent,652442:doCompare,[])
}
Add(HubEx,4825510,329,140)
{
Angle=3
link(onEvent,16518593:doWork3,[])
}
Add(HubEx,4100386,329,182)
{
Angle=3
link(onEvent,4825510:doWork3,[])
}
Add(HubEx,9341604,329,224)
{
Angle=3
link(onEvent,4100386:doWork3,[])
}
Add(HubEx,10303122,329,266)
{
Angle=3
link(onEvent,9341604:doWork3,[])
}
Add(HubEx,14950443,329,308)
{
Angle=3
link(onEvent,10303122:doWork3,[])
}
Add(Hub,804334,112,91)
{
OutCount=11
link(onEvent2,3959368:doClear,[(292,104)(292,62)])
link(onEvent3,5185660:doOperation,[])
link(onEvent4,5747908:doOperation,[(177,118)(177,153)])
link(onEvent5,14568447:doOperation,[(177,125)(177,195)])
link(onEvent6,10160459:doOperation,[(177,132)(177,237)])
link(onEvent7,11286906:doOperation,[(177,139)(177,279)])
link(onEvent8,5926633:doOperation,[(177,146)(177,321)])
link(onEvent9,15655080:doOperation,[(177,153)(177,363)])
link(onEvent10,7872292:doData,[(275,160)(275,167)])
}
Add(If_else,652442,357,105)
{
Type=2
Op2=Integer(0)
link(onTrue,7601361:doOperation,[])
}
Add(GetDataEx,6201972,434,84)
{
link(Data,3959368:Value,[])
}
Add(DoData,7872292,406,161)
{
link(onEventData,9717891:doOperation,[])
link(Data,6201972:Var1,[(412,93)])
}
Add(Memory,10001985,518,84)
{
Default=Integer(0)
}
Add(Math,9717891,511,161)
{
Op1=1
ResultType=0
link(onResult,10001985:doValue,[(555,167)(555,118)(506,118)(506,90)])
link(Op2,14671923:Var2,[])
}
Add(Math,8057683,553,203)
{
OpType=1
Op1=35
ResultType=0
link(onResult,16634185:onEventData,[(639,209)(639,27)])
link(Op2,14671923:Var3,[(566,142)])
}
Add(GetDataEx,14671923,511,133)
{
link(Data,10001985:Value,[])
}
Add(Hub,1227567,469,203)
{
link(onEvent1,8057683:doOperation,[])
link(onEvent2,11146612:doCalc,[(527,216)(527,272)])
}
Add(MathParse,11146612,553,266)
{
MathStr="%1*100 div 35"
link(onResult,16634185:onResult,[(639,272)(639,34)])
link(X1,8057683:Result,[])
}
END_SDK
Add(Hub,10511176,140,133)
{
OutCount=3
link(onEvent1,12521979:doOperation,[(303,139)(303,349)])
link(onEvent2,11530578:doEnum,[])
}
Add(Label,926163,119,21)
{
Left=45
Top=10
Width=55
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="One Cow"
}
Add(Label,1363523,203,21)
{
Left=185
Top=10
Width=56
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="Tow Cow"
}
Add(Label,13461899,245,21)
{
Left=80
Top=205
Width=74
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="Coincidence"
}
Add(Edit,1846163,518,385)
{
Left=160
Top=215
Width=30
Text=""
}
Add(Label,1893345,161,21)
{
Left=195
Top=215
Width=13
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="%"
}

карма: 22

0
Ответов: 5446
Рейтинг: 323
#30: 2008-02-10 15:55:33 ЛС | профиль | цитата
Есть подозрение, что бОльшую часть мультика можно заменить компонентом IntToBits... Сейчас проверить не могу - linux...
карма: 1

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