新しく発言する EXIT インデックスへ
配列のデータをソートして割る

  配列のデータをソートして割る Udarath Wanigasekara 2006/03/24 16:19:14 
  6こずつに分けてとなっていますが,このプロ... 白石 和夫 2006/03/24 17:34:59 
  │└そうですね。実はそのように出てほしいです... ウダー 2006/03/24 18:28:10 
  │ └最大値の検索範囲が1つ余分です。 白石 和夫 2006/03/24 20:14:28 
  │  └ifi<lands(i)<s(i+1)thenここでi<... ウダー 2006/03/24 20:53:05 
  │   └それでよさそうな気がします。 白石 和夫 2006/03/25 07:27:15 
  もし,最初はs(0),s(1),...,s(5)のグループ... 白石 和夫 2006/03/24 17:44:06 

  配列のデータをソートして割る Udarath Wanigasekara 2006/03/24 16:19:14  ツリーへ

配列のデータをソートして割る 返事を書く
Udarath Wanigasekara 2006/03/24 16:19:14
こんにちは。留学生のウダーです。私作ったプログラムはうまくいかないです。教えてください。
  S()という配列に128個のデータが入っています。その配列を6個ずつ分けてその6データの中の一番大きい値で割ってファイルに出したいです。
  例えば:1 2 3 4 5 6 と出てこれば一番大きい値6を選択してそれで割って 1/6 2/6 0.5 4/6 5/6 1のようにファイルに書き込みたいです。

作成したプログラムはこれです。

option base 0
let M=5
for l=5 to 2^n  !128個まで
print #2: " "  !改行
let big_value=s(l-M)  !順番に最大値を与える
!print big_value,
for i=l-M to l
if i<l and s(i)<s(i+1) then
LET big_value=s(i+1)  !最大値をソート
end if
next i
!print big_value

for k=l-M to l
print #2: s(k)/big_value; !最大値で割ってファイルに書                   き込む
next k
next l

どこが間違っているのかわかりません。よろしくお願いします。


  

  6こずつに分けてとなっていますが,このプロ... 白石 和夫 2006/03/24 17:34:59  ツリーへ

Re: 配列のデータをソートして割る 返事を書く
白石 和夫 2006/03/24 17:34:59
6こずつに分けてとなっていますが,このプログラムは,
最初は,S(0),s(1),..,s(5)をbig_valueで割ったものが出力されますが,
次は,
S(1),s(2),..,s(6)をbig_valueで割ったものを
その次は
S(2),s(3),..,s(7)をbig_valueで割ったものを
となるのではないでしょうか。



  │└そうですね。実はそのように出てほしいです... ウダー 2006/03/24 18:28:10  ツリーへ

Re: 6こずつに分けてとなっていますが,このプロ... 返事を書く
ウダー 2006/03/24 18:28:10
そうですね。実はそのように出てほしいです。つまり

最初は  S(0),s(1),..,s(5)をbig_valueで割ったもの
次    S(1),s(2),..,s(6)をbig_valueで割ったもの
次    S(2),s(3),..,s(7)をbig_valueで割ったもの

しかし問題はその6のグループで最大値1までの値が出る予定ですが1より大きい値もでてしまいます。big_valueの求め方間違っていますか。 

  │ └最大値の検索範囲が1つ余分です。 白石 和夫 2006/03/24 20:14:28  ツリーへ

Re: そうですね。実はそのように出てほしいです... 返事を書く
白石 和夫 2006/03/24 20:14:28
最大値の検索範囲が1つ余分です。
let big_value=s(l-M)  !順番に最大値を与える
!print big_value,
for i=l-M to l
if i<l and s(i)<s(i+1) then
LET big_value=s(i+1)  !最大値をソート
end if
next i
だと,l-Mからl+1番までのなかの最大値をbig_valueとしていることになります。
たとえば,l=5のときは,s(0)からs(6)のなかの最大値です。

  │  └ifi<lands(i)<s(i+1)thenここでi<... ウダー 2006/03/24 20:53:05  ツリーへ

Re: 最大値の検索範囲が1つ余分です。 返事を書く
ウダー 2006/03/24 20:53:05
if i<l and s(i)<s(i+1) thenここで i<l ととっているからその問題を解決できないでしょうか。(i=l とき動かない) 
 if i<l and big_value<s(i+1) then ととればちゃんとした数字が出ました。しかしまだ自身がないです。一応ありがとうございます。

  │   └それでよさそうな気がします。 白石 和夫 2006/03/25 07:27:15  ツリーへ

Re: ifi<lands(i)<s(i+1)thenここでi<... 返事を書く
白石 和夫 2006/03/25 07:27:15
それでよさそうな気がします。

  もし,最初はs(0),s(1),...,s(5)のグループ... 白石 和夫 2006/03/24 17:44:06  ツリーへ

Re: 配列のデータをソートして割る 返事を書く
白石 和夫 2006/03/24 17:44:06
もし,最初はs(0),s(1),...,s(5)のグループで,
次が,s(6),...,s(11)のグループで
というのであれば,
for l=5 to 2^n
のところは,
for l=5 to 2^n step 6
のようにしなければなりません。
ただし,128は6の倍数ではないので,最後だけ別の処理が必要になると思います。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。