Add(InlineCode,11935127,168,126) { WorkPoints=#6:doWork| EventPoints=#5:outX,|5:outY | DataPoints=#6:iRings|5:iKoef| Code=#15:unit HiAsmUnit;|13:// Author Tad|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|20:// vr : TData;|9: public|13: iRings,|12: iKoef,|11: outX,|23: outY : THI_Event;|52: PROCEDURE doWork(var _Data:TData; Index:Word);|0:|5: end;|0:|14:implementation|0:|29:PROCEDURE THiAsmClass.doWork;|3:var|0:|33:x,y: array [1..10000] of integer;|22:m,k,Xmax,Ymax:integer;|18:ring,rings,L:byte;|0:|5:begin|0:|60:rings := toIntegerEvent(iRings);//считываем количество кольц|82:L := toIntegerEvent(iKoef);//коэффицент увеличения, принадлежит натуральным числам|0:|43:for ring:=1 to rings do //проход по кольцам|5:begin|6: m:=1;|62: k:=3*ring*ring-3*ring; //сумма глобальных номеров до кольца|0:|25: while (m<=(2*ring+1)) do|3: |6: begin|24: if (m<=(ring+1)) then|0:|12: begin|30: y[k+m]:=-1*25*L*ring;|56: x[k+m]:=L*(14*ring+28*(1-m); // проверь скобки|32: y[k+3*ring+m]:=-y[k+m];|32: x[k+3*ring+m]:=-x[k+m];|10: end|7: else|12: begin|38: y[k+m]:=25*L*((-2)*ring+m-1);|56: x[k+m]:=L*14*(1-m)}; // проверь скобки|32: y[k+3*ring+m]:=-y[k+m];|32: x[k+3*ring+m]:=-x[k+m];|34: y[k+4*ring-m+2]:=-y[k+m];|33: x[k+4*ring-m+2]:=x[k+m];|33: y[k+7*ring-m+2]:=y[k+m];|34: x[k+7*ring-m+2]:=-x[k+m];|9: end;|8: m:=m+1;|5: end;|4:end;|0:|21:k:=3*rings*(1+rings);|25:Xmax:=(27*rings+13)*L+15;|25:Ymax:=(24*rings+15)*L+15;|0:|16:for m:=1 to k do|5:begin|28:_hi_onEvent(outX,x[m]+Xmax);|28:_hi_onEvent(outY,y[m]+Ymax);|4:end;|4:end;|0:|4:end.| }