2011年3月11日金曜日

洪水 ver1

簡単な洪水を表す簡単な例。
洪水発生時刻をif文で判定しているので、今後while文等に変更する必要があると思われる。

Scifuncブロック中に以下が書いてある。


//----------------------------------------
y1=0

i=1

S=[3, 10, 11, 12, 19, 20, 30, 45, 66, 80]
V=[2, 8, 9, 8, 9, 11, 12, 9, 11, 8]

for i=1 : 10;
if Time >S(i) then y1=V(i);
if Time > S(i)+0.9 then y1=0;

end;
end;

end;
//----------------------------------------

(1)毎時間、現在の時間が洪水発生時刻かどうか、全ての配列データ
  (数百あると思われる)と比較しながら計算を進めるのはよくない
  と考えられる。
  if文をWhile文で置き換えることが考えられるが、複数の判定をしながら
  計算を進めることにならないかどうか。

(2) 次の洪水発生時刻を超えたかどうか、それだけを判定しながら計算を進
  めるのであれば、より時間が少なくてすむと思われた。
  この場合、下のようなフローチャートが考えられた。

----------------------------------------------------
   現在が、次(i番目)洪水発生を超えたか?
    →NO ・・・ いつもどおり (状態1)
    →YES ・・・ フラグ(旗)が立つ (状態2に変わる)
      現在が、洪水終了を超えたか?
      →NO ・・・ (状態2のまま)
      →YES ・・・ フラグ(旗)が降りる(状態1に戻る)
              i=i+1

----------------------------------------------------

これを行うために下記のようなプログラム(Scifunc中の記述)を考えたが、現時点ではうまく動いていない。

//----------------------------------------

Time=u1
y1=0

i=1

S=[3, 10, 11, 12, 19, 20, 30, 45, 66, 80]
V=[2, 8, 9, 8, 9, 11, 12, 9, 11, 8]

if Time >S(i) then y1=V(i);
if Time > S(i)+0.9 then y1=0; i=i+1;

end;
end;
//----------------------------------------

0 件のコメント:

コメントを投稿