新しく発言する EXIT インデックスへ
最小値

  最小値 ひろ 2007/09/30 22:11:46 
  !これは、参考になりますか。おもちゃですが... SECOND 2007/09/30 23:32:09 
  そのまま繋げればいいかと思います。 山中和義 2007/10/01 10:11:45 
  SECOND様、山中和義様 ひろ 2007/10/01 23:07:40 

  最小値 ひろ 2007/09/30 22:11:46  ツリーへ

最小値 返事を書く ノートメニュー
ひろ <ryqneoodws> 2007/09/30 22:11:46
以前にもお世話になったのですが、また質問させてください。

あるデータを読みだし、その最小値を求めたいのですが、
試行錯誤したのですがどう繋げていいのかどこに入れれば良いのかが分かりません。

100 DIM a(10000),b(10000),c(10000)
110 OPEN #1:NAME "sample.CSV", ACCESS INPUT , RECTYPE INTERNAL
120 LET n=1
130 DO
140 READ #1,IF MISSING THEN EXIT DO: a(n)
150 LET n=n+1
160 LOOP
170 CLOSE #1

最小値を求めるプログラムは以下を考えました。
実際には、データは100個程あるのですが。

100 DIM a(5)
110 LET a(1)=5
120 LET a(2)=8
130 LET a(3)=100
140 LET a(4)=2
150 LET a(5)=0.1
160 LET MIN=1000
170 FOR n=1 TO 5 STEP 1
180 IF MIN>a(n) THEN
190 LET MIN = a(n)
200 END IF
210 NEXT n
220 PRINT MIN

プログラミングが素人なもので、教えていただけないでしょうか。

  !これは、参考になりますか。おもちゃですが... SECOND 2007/09/30 23:32:09  ツリーへ

Re: 最小値 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/09/30 23:32:09
!これは、参考になりますか。おもちゃですが。


!テスト用、サンプル sample.CSV の作成。
!-----
OPEN #1:NAME "sample.CSV"
ERASE #1
FOR n=1 TO 100
PRINT #1 :RND !乱数を、100個 書いてみる。
NEXT n
CLOSE #1


!サンプル sample.CSV を、モニターしながら、最小値を探す。
!-----
LET MIN=9999
LET n=1
OPEN #1:NAME "sample.CSV", ACCESS INPUT
DO
READ #1, IF MISSING THEN EXIT DO: a
PRINT USING "###) #.######" :n, a
IF a < MIN THEN
LET MIN = a
LET num=n
END IF
LET n=n+1
LOOP
CLOSE #1


!サンプル sample.CSV の中の、最小値。
!-----
PRINT
PRINT USING "###) #.###### is Minimum" :num, MIN

END

  そのまま繋げればいいかと思います。 山中和義 2007/10/01 10:11:45  ツリーへ

Re: 最小値 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/10/01 10:11:45
そのまま繋げればいいかと思います。

最初のプログラムは、配列変数a()にデータを設定しています。
これは、2番目のプログラムの前半部(100〜150)と同じです。

したがって、データをまとめて読み込んで、その後、目的の処理(最小値を求める)を行うと考えると、


100 DIM a(10000),b(10000),c(10000)
110 OPEN #1:NAME "sample.CSV", ACCESS INPUT, RECTYPE INTERNAL
120 LET n=1
130 DO
140 READ #1,IF MISSING THEN EXIT DO: a(n)
150 LET n=n+1
160 LOOP
170 CLOSE #1

PRINT "n=";n !※注意. 1つ多い


!!!200 DIM a(5) !削除. 上の処理と等価
!!!210 LET a(1)=5
!!!220 LET a(2)=8
!!!230 LET a(3)=100
!!!240 LET a(4)=2
!!!250 LET a(5)=0.1

260 LET MIN=1000
270 FOR i=1 TO n-1 STEP 1 !※変更. カウンタを読み込んだ個数に対応
280 IF MIN>a(i) THEN !※変更
290 LET MIN=a(i) !※変更
300 END IF
310 NEXT i !※変更

320 PRINT MIN

END





また、SECONDさんのように、データを読みながら行うこともできます。
その場合、配列変数(a(10000))ではなく変数1つ(a)で処理できます。

  SECOND様、山中和義様 ひろ 2007/10/01 23:07:40  ツリーへ

Re: 最小値 返事を書く ノートメニュー
ひろ <ryqneoodws> 2007/10/01 23:07:40
SECOND様、山中和義様

ありがとうございます。
お二方のやり方でできました。

プログラミングの勉強をしたいと思います。


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