Автор | Сообщение |
|
| постоянный участник
|
Пост N: 2445
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.12.12 02:02. Заголовок: Подскажите алгоритм заполнения таблицы.....
Всем привет. Как обычно в конце недели голова совсем перестает работать... Имеется массив типа: Скрытый текст aDim:={} AADD(aDim,{495, 1}) AADD(aDim,{495, 2}) AADD(aDim,{495, 3}) AADD(aDim,{495, 4}) AADD(aDim,{495, 5}) AADD(aDim,{495, 6}) AADD(aDim,{495, 7}) AADD(aDim,{495, 8}) AADD(aDim,{495, 10}) AADD(aDim,{495, 12}) AADD(aDim,{495, 37}) AADD(aDim,{495, 53}) AADD(aDim,{495, 56}) AADD(aDim,{530, 135}) AADD(aDim,{530, 161}) AADD(aDim,{492, 37}) AADD(aDim,{459, 69}) AADD(aDim,{459, 88}) AADD(aDim,{459, 100}) AADD(aDim,{459, 102}) AADD(aDim,{459, 110})
| Подскажите ПОЖАЛУЙСТА алгоритм печати по 12 столбцов, т.е. нужно сделать ВОТ такой массив : {495, 1,2,3,4,5,6,7,8,10,12,37,53} {495,56 } {530,135,161} {492,37} {459,69,88,100, 102,110}
| |
|
Ответов - 9
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 02.12.12 03:20. Заголовок: aDim:=asort(aDim,,,{..
aDim:=asort(aDim,,,{|x,y| x[1]<=y[1]}) bDIm:={} for i=1 to len(aDim) a:=aDim[i,1] b:=aDim[i,2] n:=ascan(bDim,{|x| x[1]=a}) if n=0 aadd(bDim,{a}) n:=len(bDim) endif if len(bDim[n])>=13 AADD(bDim,{a}) n:=len(bDim) endif AADD(bDim[n],b) next i
| |
|
|
| постоянный участник
|
Пост N: 2446
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.12.12 11:10. Заголовок: Не работает... Исход..
Не работает... Исходник здесь. Скрытый текст FUNCTION MAIN() LOCAL aDim, i, a,b,n,bDim, j aDim:={} AADD(aDim,{495, 1}) AADD(aDim,{495, 2}) AADD(aDim,{495, 3}) AADD(aDim,{495, 4}) AADD(aDim,{495, 5}) AADD(aDim,{495, 6}) AADD(aDim,{495, 7}) AADD(aDim,{495, 8}) AADD(aDim,{495, 10}) AADD(aDim,{495, 12}) AADD(aDim,{495, 37}) AADD(aDim,{495, 53}) AADD(aDim,{495, 56}) AADD(aDim,{530, 135}) AADD(aDim,{530, 161}) AADD(aDim,{492, 37}) AADD(aDim,{459, 69}) AADD(aDim,{459, 88}) AADD(aDim,{459, 100}) AADD(aDim,{459, 102}) AADD(aDim,{459, 110}) aDim:=asort(aDim,,,{|x,y| x[1]<=y[1]}) bDIm:={} for i=1 to len(aDim) a:=aDim[i,1] b:=aDim[i,2] n:=ascan(bDim,{|x| x[1]=a}) if n=0 aadd(bDim,{a}) n:=len(bDim) endif if len(bDim[n])>=13 AADD(bDim,{a}) n:=len(bDim) endif AADD(bDim[n],b) next i // ------ вывод массива ------------- CLEAR SCREEN FOR i:=1 TO LEN(bDim) ? bDim[i,1] FOR j := 2 TO LEN(bDim[1]) ?? bDim[i,j] NEXT NEXT wait RETURN NIL
|
| |
|
|
| постоянный участник
|
Пост N: 1123
Зарегистрирован: 09.10.06
|
|
Отправлено: 02.12.12 13:34. Заголовок: Очень нравилось рабо..
Очень нравилось работать с hash FUNCTION MAIN() LOCAL hDim := {=>}, e1, e2 _AADD(hDim,{495, 1}) _AADD(hDim,{495, 2}) _AADD(hDim,{495, 3}) _AADD(hDim,{495, 4}) _AADD(hDim,{495, 5}) _AADD(hDim,{495, 6}) _AADD(hDim,{495, 7}) _AADD(hDim,{495, 8}) _AADD(hDim,{495, 10}) _AADD(hDim,{495, 12}) _AADD(hDim,{495, 37}) _AADD(hDim,{495, 53}) _AADD(hDim,{495, 56}) _AADD(hDim,{530, 135}) _AADD(hDim,{530, 161}) _AADD(hDim,{492, 37}) _AADD(hDim,{459, 69}) _AADD(hDim,{459, 88}) _AADD(hDim,{459, 100}) _AADD(hDim,{459, 102}) _AADD(hDim,{459, 110}) CLEAR SCREEN FOR EACH e1 IN hDim ; ? e1:__enumKey() FOR EACH e2 IN e1:__enumValue() ; ?? e2 IF e2:__enumIndex%12 == 0 ? e1:__enumKey() ENDIF NEXT NEXT WAIT RETURN 0 PROCEDURE _AADD( aHash, aPair ) #define _KEY 1 #define _VALUE 2 IF ! hb_hHaskey( aHash, aPair[_KEY] ) aHash[aPair[_KEY]] := {} ENDIF AADD( aHash[aPair[_KEY]], aPair[_VALUE] ) #undef _KEY #undef _VALUE
| |
|
|
| постоянный участник
|
Пост N: 2447
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.12.12 14:11. Заголовок: Петр пишет: Очень н..
Петр пишет: цитата: | Очень нравилось работать с hash |
| Ни разу не работал, кроме ини-файлов... Смотрю и ничего не понимаю... Под Харбором работает, а хХарбор не работает: Error BASE/1005 Class: 'HASHENTRY' has no property: _ENUMKEY Arguments: ( [ 1] = Type: O Val: { HASHENTRY Object }) Error at ...: MAIN(29) in Module: Called from : MAIN(29) in Module: dim_test2.prg Строка 29: FOR EACH e1 IN hDim ; ? e1:__enumKey() Функцию hb_hHaskey() переименовал для хХарбора в hHaskey()
| |
|
|
| Администратор
|
Пост N: 2573
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.12.12 15:59. Заголовок: У меня еще в прошлом..
У меня еще в прошлом веке, во времена клиппера, было несколько функций для работы с массивами. Во времена харбора я их переписал на С, принципы у них примерно такие, как для хеш. Так их до сих пор их и использую, не стал переделывать свой код под хеш, так привычнее. Наверное, предложу их в репозитарий харбора, не в rtl, так хотя бы в hbmisc. Может быть, кому-нибудь они пригодятся.
| |
|
|
| постоянный участник
|
Пост N: 1124
Зарегистрирован: 09.10.06
|
|
Отправлено: 02.12.12 16:41. Заголовок: Andrey пишет: Функц..
Andrey пишет: цитата: | Функцию hb_hHaskey() переименовал для хХарбора в hHaskey() |
| Сказали А, говорите и Б FOR EACH e1 IN hDim ? e1:Key FOR EACH e2 IN e1:Value ?? e2 IF hb_enumIndex()%12 == 0 ? e1:Key ENDIF NEXT NEXT Где-то так, у меня нет xhb..
| |
|
|
| постоянный участник
|
Пост N: 1125
Зарегистрирован: 09.10.06
|
|
Отправлено: 02.12.12 16:46. Заголовок: Pasha пишет: предло..
Pasha пишет: цитата: | предложу их в репозитарий харбора |
| В SVN или уже в GIT ?
| |
|
|
| постоянный участник
|
Пост N: 2448
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.12.12 20:17. Заголовок: Петр пишет: Сказали..
Петр пишет: Спасибо БОЛЬШОЕ !
| |
|
|
| Администратор
|
Пост N: 2574
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.12.12 22:38. Заголовок: Петр пишет: В SVN и..
Петр пишет: Пока SVN, на GIT вроде будут переходить после следующего релиза
| |
|
|
|