HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1121
なす配列変数の並び替え4解決


なす

リンク

2008/11/21(Fri) 14:26:48|NO.20925

こんにちは。
配列変数で、0が入ってるところは飛ばして中身を整理させたいのですが、、
r(0)=1 r(0)=1
r(1)=2 r(1)=2
r(2)=0 => r(2)=3
r(3)=3 r(3)=0
r(4)=0 r(4)=0
こんな感じです。

どうもうまくできません。どうすればいいのでしょうか?



この記事に返信する


SYAM

リンク

2008/11/21(Fri) 16:31:15|NO.20929

並べ替え自体が完成してるなら、
かんたんなのは、並べ替えの前に

repeat (要素数) if r(cnt)=0 : r(cnt)=0x7fffffff loop
とでもしておき、並べ替えの後に

repeat (要素数) if r(cnt)=0x7fffffff : r(cnt)=0 loop
…ということをすれば できます。
※ただし 配列の要素に 0x7fffffff が混じってたら使えませんね。



inovia

リンク

2008/11/21(Fri) 19:02:50|NO.20932

配列変数から変数名を変えずに0を取り除くサンプルです。
実際に作業しているところは3行程度です。


r=0,0,0,0,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,7,0,4,3,2,5,7,7,8,5,5,4,4 p=35 title "配列変数から変数名を変えずに0を取り除くサンプル(横暴?)" mes "↓元の配列" repeat p pos cnt*16,20 mes r.cnt loop //実際の作業ルーチン i=0 repeat p if r(cnt)=0:r(i)=r(cnt):else:r(i)=r(cnt):i++ loop //終了 repeat i//iに新しい配列の要素数が代入されています。 pos cnt*16,40 mes r.cnt loop pos 0,56:mes "↑変更後の配列"



なす

リンク

2008/11/21(Fri) 20:37:10|NO.20937

サンプルに抜いた数だけの0を後ろから入れていくことにより解決しました。
ありがとうございました。


//実際の作業ルーチン i=0 repeat p if r(cnt)=0:r(i)=r(cnt):else:r(i)=r(cnt):i++ loop repeat p-i r(p-cnt-1)=0 loop //終了



ANTARES

リンク

2008/11/21(Fri) 23:50:09|NO.20946

>if r(cnt)=0:r(i)=r(cnt):else:r(i)=r(cnt):i++
if r(cnt)!=0:r(i)=r(cnt):i++



ONION software Copyright 1997-2023(c) All rights reserved.