|
以下に示すような系統図があり、それぞれ路線(root*)は延長、面積を持っています。
rootA--rootB-+rootD-+rootH-+rootK(out)
| | |
rootC-+ | |
rootE--rootF--rootG-+ |
|
rootI--rootJ-+
データは、以下のように整理しました。
路線名 接続先 延長 面積
rootA rootB 120 10
rootB rootD 50 20
rootD rootH 110 50
rootH rootK 30 30
rootC rootD 60 20
rootE rootF 100 40
rootF rootG 90 70
rootG rootH 70 100
rootI rootJ 80 80
rootJ rootK 20 60
rootK 10 70
<これまで行ったこと>
これらの路線名、接続先を読み込み接続先のループ内に路線名のループを回し
全データ比較してヒットしなかった場合、起点路線であることまでは検出できました。路線名(Rname),接続先(Oneme)、起点路線(Rst)とすると以下のコードで
起点路線まで見つけることができました。
for i= i to Ndat
for j= i to Ndat
if(Oname(i)=Rname(j))then
exit for
elseif(j=Ndat)then
icnt=icnt+1
Rstr(icnt)=Rname(i)
endif
next j
next i
<したいこと>
起点路線から延長、面積を合計し、延長は合流点で上流側の長い延長に自分の延長を加えるようにする。
<質問>
接続先のループを回して同じものを集計すれば面積は計算できそうですが、先に起点から合流点まの階層数を調べなければ合計ができそうもないので行き詰まってしまいました。
どなたか、よい考え方があればご教授願います。
<結果の例>
路線名 延長 面積
rootA 120 1
rootB 170 3
rootC 60 2
rootD 280 10
rootE 100 4
rootF 190 11
rootG 260 21
rootH 310 34
rootI 80 8
rootJ 100 14
rootK 320 55
|
|