Вверх ↑
Этот топик читают: Гость
Ответов: 902
Рейтинг: 27
#1: 2015-03-05 13:51:25 ЛС | профиль | цитата
Здравствуйте.
Помогите пожалуйста решить задачку.
Есть список строк в виде: число1;число2
Нужно проверить число2 на совпадение в остальных строках.
Если совпадений нет, то число1, записать в файл: U-1
Если совпадения есть, то каждое последующее совпавшее число1, записывать в новый файл.
Например: U-2 U-3 U-4 U-5 U-6 U-7 и так далее.
Думаю, что не понятно объяснил, попробую привести пример:
Например в строках есть такие значения:

224013;230425939757
224420;230425939757
223333;230425939757
555555;230425939757

Берём первую строку и проверяем на совпадения. Найдено 4 строки.

Нужно в файл U-1, записать: 224013
в файл U-2, записать: 224420,
в файл U-3, записать: 223333,
в файл U-4, записать: 555555
Затем взять следующую строку и проделать то-же самое, каждый раз, дописывая значения в файлы.

code_35270.txt
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_35270.txt [4.3KB] [206]
Ответов: 16884
Рейтинг: 1239
#2: 2015-03-05 19:33:46 ЛС | профиль | цитата
juk писал(а):
Думаю, что не понятно объяснил
Правильно думаешь.
Как бы это делал я:
1. Поменять местами числа 2 и 1
230425939757;224013
230425939757;224420
230425939757;223333
230425939757;555555
2. Сортировка
230425939757;223333
230425939757;224013
230425939757;224420
230425939757;555555
3. Построчный перебор ArrayEnum.
4. Пока первое не меняется (компонент ChangeMon) записываем в U-1, U-2 и т.д.
5. Первое изменилось сбрасываем Math в 1 (или 0)
6. Конец ArrayEnum

Add(MainForm,1304682,245,462)
{
Width=804
Height=551
}
Add(Button,7523982,245,399)
{
Left=170
Top=5
Width=40
link(onClick,939067:doEvent1,[])
}
Add(ArrayEnum,11795611,357,406)
{
link(onItem,3132897:doSplit,[])
link(onEndEnum,8627006:doEvent1,[(404,419)(404,461)])
link(Array,2480119:Array,[])
}
Add(StrList,16371553,532,413)
{
Point(doSort)
}
Add(Memo,2480119,343,336)
{
Left=5
Top=5
Width=155
Height=500
Font=[Consolas,8,0,0,204]
Strings=#19:224013;230425939757|19:855945;425139317513|19:343912;660990662288|19:120341;211661973980|19:855640;741220546590|19:287044;359494229598|19:283345;369818236442|19:329187;128138915467|19:266901;169828477039|19:852387;339500391138|19:263861;308274871570|19:409901;359494229598|19:589703;342528148861|19:299541;253401502153|19:309245;612081504149|19:262865;175212234491|19:856117;442177267732|19:829170;113739931923|19:852699;568551640516|19:817244;100400126291|19:100014;288803439028|19:149278;355005330178|19:160001;288803439028|19:216431;312350049556|19:224420;230425939757|19:256452;153301108794|19:266540;222569055559|19:316183;185921227552|19:330313;111330621368|19:349549;261486399249|19:353055;261486399249|19:391273;660990662288|18:44444;288803439028|19:465663;234614187621|19:589725;211252968785|19:655132;211252968785|19:675977;211252968785|19:720752;211252968785|19:731503;420340504893|19:741653;420340504893|19:745814;235522607856|19:781611;211252968785|19:781901;303980160846|19:782100;211252968785|19:782672;303980160846|19:782832;211252968785|19:783129;211252968785|19:794309;442177267732|19:799822;329026045326|19:799825;329026045326|19:799936;211252968785|19:223333;230425939757|19:555555;230425939757|
ScrollBars=2
}
Add(StrPart,3132897,420,406)
{
Char=";"
Point(Right)
link(onPart,2611243:doStrCatDlm,[])
}
Add(StrCatDelim,2611243,476,413)
{
Delimiter=";"
link(onStrCatDlm,16371553:doAdd,[])
link(Str1,3132897:Right,[(482,401)(461,401)(461,450)(426,450)])
}
Add(Memo,13139763,532,490)
{
@Hint=#19:Это для наглядности|23:в рабочей схеме удалить|
@Color=5592575
Left=220
Top=5
Width=175
Height=500
ScrollBars=2
link(Str,16371553:Text,[])
AddHint(46,-24,127,26,@Hint)
}
Add(Hub,939067,301,399)
{
link(onEvent1,16371553:doClear,[(521,405)(521,426)])
link(onEvent2,11795611:doEnum,[])
}
Add(Hub,8627006,441,455)
{
OutCount=4
link(onEvent1,16371553:doSort,[])
link(onEvent2,13139763:doClear,[(493,468)(493,503)])
link(onEvent3,13139763:doAdd,[(510,475)(510,496)])
link(onEvent4,12238206:doEnum,[(469,482)(469,552)])
}
Add(ArrayEnum,12238206,546,546)
{
link(onItem,10595939:doSplit,[])
link(Array,13139763:Array,[])
}
Add(StrPart,10595939,609,546)
{
Char=";"
Point(Right)
link(onPart,15603474:doData,[])
}
Add(ChangeMon,15603474,658,553)
{
}
и т.д.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 902
Рейтинг: 27
#3: 2015-03-05 20:34:02 ЛС | профиль | цитата
Tad писал(а):
Правильно думаешь.


Просто не пойму как правильно объяснить.
Например есть строки:

55;красный
888;зелёный
900;синий
6;оранжевый
89;зелёный
950;синий
980;синий
00;красный

Берём первую строку, проверяем цвет на совпадение с остальными строками.
Совпадений только одно в последней строке.
Тогда цифру 55, записываем в 1 файл, а 00 во 2 файл.
Берём следующую строку с цветом зелёный, тоже одно совпадение.
Дописываем в файл 1 888, а в файл 2 89
Следующая строка синий. В файл 1, дописываем 900, в файл 2 950 в файл 3 980
четвёртая строка оранжевый, совпадений нет, просто дописываем её в файл 1.
Должны получится такие записи в файлах:

Файл 1
55
888
900
6

Файл 2
00
89
950

Файл 3
980

Мне нужно тоже самое, только с цифрами, с теми что в схеме выше.
Объяснить ещё понятнее, у меня вряд ли получится.
Вроде и логика простая, а уже с утра бьюсь.
В общем строки, нужно разбить на файлы, чтоб в каждом файле не было повторяющегося цвета.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 16884
Рейтинг: 1239
#4: 2015-03-05 20:57:11 ЛС | профиль | цитата
Выше выложил начало.
До конца сам трудись.
То, что я предложил:
1. Все красные запишет в разные файлы. (U-1, U-2, U-3 и.т.д.)
2. Начались зеленые.
3. Math (накопитель +1) сбрасывает в 0
4. Потом все зелёные допишет по одному значению в эти же файлы
5. И так далее.


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 902
Рейтинг: 27
#5: 2015-03-05 21:18:24 ЛС | профиль | цитата
Выше выложил начало.

Ок. Спасибо. Начало есть, уже легче.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 16884
Рейтинг: 1239
#6: 2015-03-05 21:25:04 ЛС | профиль | цитата
Второе Memo для наглядности. Его выбросить, а ArrayEnum подключить к StrList.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2270
Рейтинг: 677
#7: 2015-03-05 21:51:45 ЛС | профиль | цитата
juk, судя по вашему описанию, вроде так:
code_35278.txt но возможно будет вариант получше.
Надеюсь сохранить динамически созданные списки сможете.
карма: 11

0
файлы: 1code_35278.txt [4.6KB] [169]
Ответов: 902
Рейтинг: 27
#8: 2015-03-05 21:59:02 ЛС | профиль | цитата
sla8a, Спасибо. Уже сделал. Вроде работает как надо, но очень у меня всё заморочено. Сейчас Вашу схему гляну.
code_35279.txt
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_35279.txt [7.1KB] [209]
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)