1

お願い...この配列の値をグループ化するのを手伝ってください

私はこのような配列を持っています

    Arr(0) = 5
    Arr(1) = ATC^1
    Arr(2) = BTC^2
    Arr(3) = ATC^3
    Arr(4) = CTC^4
    Arr(5) = BTC^5

最終的には、Arr(0)をグループ内の一意のTCの数である3に変更します。ATC、BTCおよびCTC。そして、1、2、3の各項目に、配列からのグループ化された値を持たせたいと思います。

    Arr(0) = 3
    Arr(1) = ATC:1,3
    Arr(2) = BTC:2,5
    Arr(3) = CTC:4

私はこれをMUMPで実行しようとしているので、ソート/グループ化機能は組み込まれていません。

擬似コードでも役に立ちます。

4

2 に答える 2

2

MUMPSでは、配列の添え字が自動的にソートされるため、ソート機能は必要ありません。

したがって、最も簡単な方法は、並べ替えディメンションが最初のデータと値(2番目のデータ)である別の配列を作成することです。

for i=1:1:Arr(0) set piece1=$piece(Arr(i),"^",1), piece2=$piece(Arr(i),"^",2), Temp(piece1)=$get(Temp(piece1))_piece2_","

そのコードを実行した後、次の配列を取得します

Temp("ATC")="1,3,"
Temp("BTC")="2,5,"
Temp("CTC")="4,"

次に、その配列をトラバースして、必要な配列を作成します。

set i="",Brr=0 for  set i=$o(Temp(i)) quit:i=""  set Brr=Brr+1,Brr(Brr)=i_":"_Temp(i)

必要な配列を取得します。

Brr(1)="ATC:1,3,"
Brr(2)="BTC:2,5,"
Brr(3)="CTC:4,"
于 2012-12-06T05:42:25.887 に答える
2

代わりの:

2次元配列:

Temp("ATC",1)=""
Temp("ATC",3)=""
Temp("BTC",2)=""
Temp("BTC",5)=""
Temp("CTC",4)=""

$oループは、ソートされた順序でアイテムの最初のレベルを調べ、次にネストされて2番目のレベル$oを実行できます。または、ソートされたリストのみが必要な場合は、最初のリストだけです。これにより、リストから要素を選択的に削除し、配列内のメモを設定して強制終了できるようにする場合に、文字列ロジックが保存されます。

の並べ替えロジックは一般的ではありませんMUMPS。データは通常、並べ替えられた順序で保持されるような配列にロード/保存されます。

于 2012-12-13T20:56:05.117 に答える