Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / перестроить массив / 6 сообщений из 6, страница 1 из 1
13.09.2007, 14:41
    #34797850
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перестроить массив
Здавствуйте! Помогите реализовать следующую вещь:

есть некий массив с данными:
mass("one")=.....
mass("two")=.....
mass("three")="5555"
mass("three",1)="1111"
mass("three",2)="2222"
mass("three",3)="3333"
mass("three",4)="4444"
mass("four")=.......
mass("five")=.....
mass("six")=....

надо перестроить mass("three") так чтобы было следующее
....
mass("three")="1111"
mass("three",1)="2222"
mass("three",2)="3333"
mass("three",3)="4444"
mass("three",4)="5555"
....

тут надо еще заметить, что
mass("three")="1111" < 32735 символа
mass("three",1)="2222" = 32735 символа
mass("three",2)="3333" = 32735 символа
mass("three",3)="4444" = 32735 символа
mass("three",4)="5555" = 32735 символа

это таким образом у меня большой объем данных разбивается.. и получается, что самый последний кусок вначале, а все остальное в нормальном виде после(((

в общем, жду ваших предложений!!
спасибо)
...
Рейтинг: 0 / 0
13.09.2007, 14:46
    #34797874
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перестроить массив
пыталась перестроить таким образом:

Set prop=""
While 1 {
Set prop=$Order(save(prop)) Quit:prop=""
if $D(save(prop))=11 {
Set stream = ##class(%GlobalCharacterStream).%New()
s inc=""
do stream.WriteLine(save(prop))
while 1 {
s d=$O(save(prop,inc)) quit:inc=""
do stream.WriteLine(d)
}
do stream.Write(save(prop))
Do stream.Rewind()
k save(prop)
While (stream.AtEnd = 0)
{
s save(prop,$I(save(prop)))=stream.Read()

}
}

}

получилось, что тока остаток сохраняет в массив (типа mass("three")="1111")
в общем, может подскажите где ошибка, либо предложите свой способ..
...
Рейтинг: 0 / 0
13.09.2007, 14:56
    #34797919
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перестроить массив
Вот что-то такое например...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
PRIMER
 s str="12345678901234567890123"
 s max= 10 
 s gl=$na(^tmp("Primer"))
 for i= 0 : 1 :$l(str)\n {
    s val=$e(str,n*i+ 1 ,n*i+n)
    if i= 0  {
       s @gl=val
    } else {
       s @gl@(i)=val
    }
 }
 q
Написал прямо тут, не пробовал, не запускал... Просто как идея...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
13.09.2007, 15:02
    #34797953
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перестроить массив
А-а-а... Тебе перестроить нужно то что есть. Тогда вот вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
PRIMER
 s gl=$na(^tmp)
 s uz=$o(@gl@(""))
 while uz'="" {
    s dat=$na(@gl@(uz))
    s i=$o(@gl@(uz,""))
    while i'="" {
       s val=@dat
       s @dat=@gl@(uz,i)
       s @gl@(uz,i)=val
       s dat=$na(@gl@(uz,i))
       s i=$o(@gl@(uz,i))
    }
    s uz=$o(@gl@(""))
 }
 q
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
13.09.2007, 15:04
    #34797958
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перестроить массив
Вот эта строка в конце
Код: plaintext
    s uz=$o(@gl@(""))
Будет вот такая
Код: plaintext
    s uz=$o(@gl@(uz))
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
13.09.2007, 15:45
    #34798160
Dysan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перестроить массив
Это будет так...

PTK>s mass("three")="5555" s mass("three",1)="1111" s mass("three",2)="2222" s mass("three",3)="3333" s mass("three",4)="4444"
PTK>zw mass("three")
PTK>s x = mass("three")
PTK>s mass("three")=mass("three",1)
PTK>s mass("three",1)=x
PTK>s i=2
PTK>zw mass("three")
PTK>while $G(mass("three",i))'="" { s x=mass("three",i-1) s mass("three",i-1)=mass("three",i) s mass("three",i)=x s i=i+1}
PTK>zw mass("three")
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / перестроить массив / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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