Вверх ↑
Ответов: 96
Рейтинг: 1
#1: 2010-12-25 18:42:36 ЛС | профиль | цитата
Леонид, большое спасибо. Я достал препода и он мне рассказал, что хочет видеть.

например для этого рисунка
1700*2200 217кб

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-е действия. И как можно данную схему модернизировать или упростить? Надеюсь на Вашу помощь. Заранее благодарен.
карма: 0

0
файлы: 2code_21917.txt [3.9KB] [167], code_21919.txt [1.8KB] [164]