Леонид, большое спасибо. Я достал препода и он мне рассказал, что хочет видеть.
например для этого рисунка
1. сначала копируеться первый и последний элемент строки и межде ними происходит операция Xor.
2. производиться сдвиг строки влево
3. получившееся значение в первом пункте записывается взамен второго элемента строки (справа на лево)
Таким образом при первом цикле при копировании крайних левого и правого символов строки дополнительно левый символ подаеться на выход (последовательный выход), а при третьем цыкле после замены второго символа (справа на лево) выдаеться получившаяся строка на второй выход(параллельный выход)
Как это реализовать на стандартных элементах или на IC.
Вот пример цыклического сдвига с форума, единственное что при копировании крайних значений (левого и правого) данная схема выдает одинаковые символы. code_21919.txt
------------ Дoбавленo в 17.52:
Ravilr объясни как правильно прикреплять большие картинки.
Вот продолжение схемы Add(MainForm,2953706,595,135)
{ Width=508 } Add(Edit,15187093,252,224) { @Hint=#43:Добавил цыфру 3 для нагладности копирования| Left=35 Top=60 Width=225 Text="0001" } Add(Copy,13143375,252,392) { Position=1 Count=1 link(onCopy,5959874:doStrCat,[]) link(Str,8076340:Var2,[]) link(Count,381764:Var1,[(272,320)]) } Add(Delete,10599294,357,343) { Count=1 PColor(Str,5570560) link(onDelete,3917356:doData,[]) link(Str,7370134:Var2,[]) link(Count,381764:Var3,[(377,320)]) } Add(GetDataEx,3492842,252,266) { PColor(Data,5570560) link(Data,15187093:Text,[]) } Add(StrCat,5959874,406,392) { link(onStrCat,15394718:doWork3,[(492,398)]) link(Str1,3917356:GetData,[(412,384)(412,384)]) } Add(EventFromData,3917356,406,343) { link(onEvent,10599294:doDelete,[(450,349)(450,333)(345,333)(345,349)]) } Add(GetDataEx,381764,308,315) { } Add(Copy,13505492,207,490) { Position=1 Count=1 Direction=1 link(onCopy,336402:doText,[]) link(Str,14094442:Var2,[]) link(Count,381764:Var2,[(227,383)(314,383)]) } Add(GetDataEx,8076340,252,336) { link(Data,3492842:Var2,[]) } Add(Label,12661538,700,581) { Left=50 Top=100 Width=38 Height=17 Caption="Левый" } Add(Copy,11443879,452,490) { Position=1 Count=1 link(onCopy,15285092:doEvent1,[]) link(Str,14094442:Var3,[(458,453)]) } Add(Label,14267683,918,490) { Left=95 Top=140 Width=38 Height=17 Caption="xor" } Add(Math,8855637,672,490) { OpType=6 link(onResult,14267683:doText,[]) link(Op2,336402:Text,[(685,478)(535,478)(535,534)(342,534)]) } Add(Hub,15285092,581,490) { link(onEvent1,8855637:doOperation,[]) link(onEvent2,12661538:doText,[(647,503)(647,587)]) } Add(Edit,336402,336,490) { Left=140 Top=100 Width=52 Height=17 Color=-16777201 Ctl3D=1 Text="правый" link(onChange,11443879:doCopy,[]) } Add(GetDataEx,14094442,207,448) { link(Data,8076340:Var3,[(213,341)]) } Add(Button,2185880,70,490) { Left=280 Top=55 Width=185 Height=45 Caption="1. копирование первого и последнего символов" link(onClick,13505492:doCopy,[]) } Add(Button,2009318,81,392) { Left=280 Top=110 Width=185 Caption="2. цыклический сдвиг" link(onClick,13143375:doCopy,[]) } Add(Delete,11495208,884,555) { Position=2 Count=1 Direction=1 PColor(Str,5570560) link(onDelete,11191653:doData,[]) link(Str,7370134:Var3,[(890,271)]) } Add(StrCat,15876500,933,639) { link(onStrCat,15394718:doWork1,[(1018,645)(1018,384)]) link(Str1,11191653:GetData,[]) link(Str2,8855637:Result,[(946,581)(678,581)]) } Add(EventFromData,11191653,933,555) { link(onEvent,11495208:doDelete,[(977,561)(977,545)(872,545)(872,561)]) } Add(Hub,13723393,805,490) { link(onEvent2,15876500:doStrCat,[(841,503)(841,645)]) } Add(HubEx,15394718,488,378) { Angle=3 link(onEvent,15187093:doText,[(492,184)(240,184)(240,230)]) } Add(GetDataEx,7370134,357,266) { Angle=3 PColor(Data,5570560) link(Data,3492842:Var3,[]) } Add(Button,15204834,677,410) { Left=280 Top=140 Width=185 Height=45 Caption="3. замена второго символа (справа)значением xor" link(onClick,13723393:doEvent1,[(757,416)(757,496)]) }
, но почему-то не могу заменить второй элемент справа. Как это сделать?
------------ Дoбавленo в 18.42:
Помогите со схемой. Add(Button,7030230,908,602)
{ Left=280 Top=195 Width=185 Height=45 Caption="4. устанавливает вторым элементом(справа)значение xor" link(onClick,9259468:doInsert,[]) } Add(MainForm,2953706,595,135) { Width=508 } Add(Edit,15187093,252,224) { @Hint=#43:Добавил цыфру 3 для нагладности копирования| Left=35 Top=60 Width=225 Text="0001" } Add(Copy,13143375,252,392) { Position=1 Count=1 link(onCopy,5959874:doStrCat,[]) link(Str,8076340:Var2,[]) link(Count,381764:Var1,[(272,320)]) } Add(Delete,10599294,357,343) { Count=1 PColor(Str,5570560) link(onDelete,3917356:doData,[]) link(Str,7370134:Var2,[]) link(Count,381764:Var3,[(377,320)]) } Add(GetDataEx,3492842,252,266) { PColor(Data,5570560) link(Data,15187093:Text,[]) } Add(StrCat,5959874,406,392) { link(onStrCat,12551855:doWork3,[(492,398)]) link(Str1,3917356:GetData,[]) } Add(EventFromData,3917356,406,343) { link(onEvent,10599294:doDelete,[(450,349)(450,333)(345,333)(345,349)]) } Add(GetDataEx,381764,308,315) { } Add(Copy,13505492,207,490) { Position=1 Count=1 Direction=1 link(onCopy,336402:doText,[]) link(Str,14094442:Var2,[]) link(Count,381764:Var2,[(227,383)(314,383)]) } Add(GetDataEx,8076340,252,336) { link(Data,3492842:Var2,[]) } Add(Label,12661538,469,728) { Left=50 Top=100 Width=38 Height=17 Caption="Левый" } Add(Copy,11443879,452,490) { Position=1 Count=1 link(onCopy,15285092:doEvent1,[]) link(Str,14094442:Var3,[(458,453)]) } Add(Label,14267683,568,588) { Left=95 Top=140 Width=38 Height=17 Caption="xor" } Add(Math,8855637,504,588) { OpType=6 link(onResult,14267683:doText,[]) link(Op2,336402:Text,[(517,478)(535,478)(535,534)(342,534)]) } Add(Hub,15285092,581,490) { link(onEvent1,8855637:doOperation,[(607,496)(607,545)(492,545)(492,594)]) link(onEvent2,12661538:doText,[(616,503)(616,734)]) } Add(Edit,336402,336,490) { Left=140 Top=100 Width=52 Height=17 Color=-16777201 Ctl3D=1 Text="правый" link(onChange,11443879:doCopy,[]) } Add(GetDataEx,14094442,207,448) { link(Data,8076340:Var3,[(213,341)]) } Add(Button,2185880,70,490) { Left=280 Top=55 Width=185 Height=45 Caption="1. копирование первого и последнего символов" link(onClick,13505492:doCopy,[]) } Add(Button,2009318,81,392) { Left=280 Top=110 Width=185 Caption="2. цыклический сдвиг" link(onClick,9870154:doWork2,[]) } Add(GetDataEx,7370134,357,266) { Angle=3 PColor(Data,5570560) link(Data,3492842:Var3,[]) } Add(Button,15204834,737,392) { Left=280 Top=140 Width=185 Height=45 Caption="3. удаляет 2-й элемент(справа)" link(onClick,12730003:doStrCat,[]) } Add(Insert,9259468,966,602) { Position=3 PColor(Str,5570560) link(onInsert,14109302:doWork3,[(1003,608)(1003,321)]) link(Str,4068344:Var3,[(972,260)]) link(SubStr,8855637:Result,[(979,380)(804,380)(804,569)(510,569)]) } Add(Delete,2125735,779,336) { Position=2 Count=1 Direction=1 PColor(Str,5570560) link(onDelete,13428651:doData,[]) link(Str,4068344:Var1,[(785,249)(617,249)]) } Add(HubEx,12551855,488,315) { Angle=3 link(onEvent,15187093:doText,[(492,184)(240,184)(240,230)]) } Add(GetDataEx,4068344,611,255) { Angle=3 PColor(Data,5570560) link(Data,7370134:Var1,[(363,260)]) } Add(EventFromData,13428651,828,336) { link(onEvent,2125735:doDelete,[(872,342)(872,330)(767,330)(767,342)]) } Add(StrCat,12730003,821,392) { link(onStrCat,14109302:doWork1,[(903,398)]) link(Str2,13428651:GetData,[(834,377)(834,377)]) } Add(HubEx,14109302,899,315) { Angle=1 link(onEvent,12551855:doWork1,[(903,321)]) } Add(HubEx,9870154,154,392) { link(onEvent,13143375:doCopy,[]) }
Как в ней сделать, чтобы один раз нажать кнопку и выполнилось последовательно все 4-е действия. И как можно данную схему модернизировать или упростить? Надеюсь на Вашу помощь. Заранее благодарен.
|