powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SKRESHIVANIYA
22 сообщений из 22, страница 1 из 1
SKRESHIVANIYA
    #32545094
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
POMOQITE POJALUSTA! U MENYA TAKOY VOPROS.

Yest 1 polya :A , 4 zapis.

A
12345
QAZWS
TYUIO
1QAZ2
Nado chto sluchaynim obrazam po para vzyat ix, dopustim:

12345
1qaz2


qazws
tyuio

dlya 1-y para dopustim k=2, dlya 2-ya para k=4 (k-toje sluchaynoe chislo)

12 345
1q az2


qazw s
tyui o


rezultat doljen bit takoy:
12az2
1q345

qazwo
tyuis
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32545156
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так устроит?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
* Проиндексировать по случайному числу
=rand(- 1 )
index on str(rand()* 1000000000 , 9 , 0 ) to rnd.idx
* Сканом пройтись и взять значения полей попарно
i= 0 
scan all
  ?pole
  i=mod(i+ 1 , 2 )
  if i= 1 
    ? '---'
  endif
endscan
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32545199
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Naccet 1-y casti voprosa ponyal (po parno vzyat), a kak nachet 2-y casti:
.....
dlya 1-y para dopustim k=2, dlya 2-ya para k=4 (k-toje sluchaynoe chislo)

12 345
1q az2


qazw s
tyui o


rezultat doljen bit takoy:
12az2
1q345

qazwo
tyuis
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32545222
Раз (1)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то вроде
Код: plaintext
1.
2.
3.
lcBufferString = lcString1
lcString1 = STUFF(lcString1,  0 , k, LEFT(lcString2, k))
lcString2 = STUFF(lcString2,  0 , k, LEFT(lcBufferString, k))
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32545882
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Naccet 1-y casti voprosa (po parno vzyat) YESHYO KAKIE TO VARIANTI YEST?
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32545902
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вторая часть изложена не очень ясно. Что это за случайное K?
Что с ним делают? В каком диапазоне у K значения?
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32545932
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Diapazon K zavisit ot dlina poley. dopustim u nas :k=[1-5].
*************
A
12345
QAZWS
TYUIO
1QAZ2
*****
no eto ne problema ,seycas eto k ya moqu slucayno vzyat , no eti poley po parno ne moqu vzyat. Kolocestvo zapisey moqut bit i bolshe 4.
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546215
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, понял - нужно у пар поменять местами случайное количество символов с хвоста.

Модифицируем скрипт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
* Проиндексировать по случайному числу
=rand(- 1 )
index on str(rand()* 1000000000 , 9 , 0 ) to rnd.idx
* Далее берем попарно и меняем хвосты в цикле
prvalue=''
i= 1 
k=reccount()
r= 0 
l=len(pole)
go top
do while i* 2 <=k
  r=int(rand()*l)+ 1 
  prvalue=pole
  skip  1 
  ?left(prvalue,r)+right(pole,l-r)
  ?left(pole,r)+right(prvalue,l-r)
  ?'---'
  skip1
  i=i+ 1 
enddo
Так?
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546377
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Da tak. NO u menya opyat pochemu to v 1-y pare vsye kak nado, a 2-m net. Mojet ya chto to ne tak delayu?
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546392
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка -

skip1 надо заменить на
skip 1
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546464
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Nado chtobi vzyat tak chto zapisi ucastvovavshix na 1-m pare ne uchstvovali na ostalnix i t.d. Pari DALJNI BIT UNIKALNI.
A vashim primere pomeomu ne tak
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546488
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему же? Установив индекс по случайному числу, мы потом проходим по записям сверху вниз (skip-ами или же, как в первом примере, scan-ом).
Это достаточная гарантия того, что запись, обработанная один раз, вторично обработана не будет. Более того, второй пример учитывает, что число записей может быть нечетным. Лишняя одна запись не будет обработана.
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546504
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Ya toje tak dumal. No u menya pochemu to ne tak
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546527
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Ya seycas zametil chto, yesli sortirovat po kakomu to pole poluchayetsya tak kak mne nado. A sortirovat po sluchaynomu cislo ne moqu.
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546534
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вижу других ошибок.

1. Может, в нескольких записях строки одинаковые, а так не надо?
Тогда надо:
Код: plaintext
1.
2.
3.
select distinct a from mytable into cursor mycursor
select mycursor
index on str(rand()* 1000000000 , 9 , 0 ) to rnd.idx
...

2. С отладочными целями можно выводить на экран перед каждым skip'ом
Код: plaintext
?recno() 
- что позволит убедиться в том, что записи разные.

3. Да, и если имя поля A, то, конечно, надо везде где у меня написано "pole" написать "A"
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546553
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю, почему индекс не создается - в принципе, должен.
Можно добавить в таблицу второе поле B и сделать:

Код: plaintext
1.
replace all b with str(rand()* 1000000000 , 9 , 0 )
index on b to rnd.idx

вместо

Код: plaintext
index on str(rand()* 1000000000 , 9 , 0 ) to rnd.idx
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546559
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или так:

Код: plaintext
index on str(rand()* 1000000000 , 9 , 0 )+A to rnd.idx

;-)
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546586
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Posmotrite pojalusta, v primere. Cto tut ne tak?
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546694
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
2-ya polya toje ne pamoqla. Neznayu pochemu?!
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546766
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Net 2-ya pole pamoqla, SPASIBO Urri!
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546767
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
* Это запускается один раз для создания индекса
USE AL
=rand(- 1 )
index on str(rand()* 1000000000 , 9 , 0 ) to rnd.idx

* Основной цикл
CLEAR
LOCAL lcString1, lcString2, lcStrin3, lcString4, lnPoz
STORE '' TO lcString1, lcString2 
select AL
SET ORDER TO rnd
GO TOP
SCAN
	IF EMPTY(m.lcString1)
		lcString1 = AL.AS1
		LOOP
	ENDIF
	lcString2 = AL.AS1
	=rand(- 1 )
	lnPoz = int(rand()*LEN(AL.AS1))+ 1 
	lcString3 = LEFT(m.lcString1,m.lnPoz)+SubStr(m.lcString2,m.lnPoz+ 1 )
	lcString4 = LEFT(m.lcString2,m.lnPoz)+SubStr(m.lcString1,m.lnPoz+ 1 )
	?m.lcString1,' -> ',m.lcString3
	?m.lcString2,' -> ',m.lcString4
	?'-----------------------------'
	
	STORE '' TO lcString1, lcString2 
ENDSCAN

В принципе, можно и без индекса. Но в этом случае нужна будет временная таблица (или массив) для хранения уже использованных записей, что по сути то же самое
...
Рейтинг: 0 / 0
SKRESHIVANIYA
    #32546861
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему, перемещение по записям вызывает переоценку построенного индекса и его перестройку (сравниваемый-то RAND() теперь другой!). Поэтому существует возможность повторного попадания записи в scan.

Можно еще, наверное, так:

select a, int(rand()*1000000000) as b ;
from mytable ;
into cursor mycursor ;
order by 2

scan
...
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SKRESHIVANIYA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]