#99 Article 1067 Posted at 1995/12/22 22:54:28 by たぐれっと (MAP4870) [SAHOU.4]

Subject: Re: プログラミング作法・お題4 /1052

今回は結構長くなりました。
 N88-BASIC(86)用。

100 ' かうんたー
110 '"count",a
120 KEY 2,"system"+CHR$(13)
130 DEFINT A-Z
140 ON ERROR GOTO *ETRAP
150 E53$="'input.txt' が見つかりません(^^;"
160 E14$="メモリが尽きました。途中ですが結果のほうに。。(^^;"
170 OPEN "input.txt"  FOR INPUT  AS #1
180 OPEN "output.txt" FOR OUTPUT AS #2
190 OPTION BASE 1
200 DIM JI$(2048),C(2048)
210 Z=1 : CLS
220 PRINT "      個の変数を使っています。残りメモリが心配(^^;"
230 ' かうんと
240 *COUNT
250  IF EOF(1) THEN *FOWARI
260  LINE INPUT #1,JI$ : I=0
270  WHILE I<=Z
280   I=I+1 : IF JI$=JI$(I) THEN C(I)=C(I)+1 : GOTO *COUNT
290  WEND
300  Z=Z+1  : PRINT CHR$(11);Z
310  C(Z)=1 : JI$(Z)=JI$
320  GOTO *COUNT
330 *FOWARI
340 PRINT "カウント終了。ソートします。"
350 ' ならべかえ
360 *SORT
370 FOR I=1 TO Z-1
380  PRINT ".";
390  FOR J=I+1 TO Z
400   IF C(I)<C(J) THEN SWAP C(I),C(J) : SWAP JI$(I),JI$(J)
410  NEXT
420 NEXT
430 ' はっぴょう
440 PRINT : PRINT "結果発表~。'output.txt' に出力します。"
450 FOR I=1 TO Z
460  PRINT #2,C(I);":";JI$(I)
470 NEXT
480 END
490 ' えらーとらっぷ
500 *ETRAP
510 IF ERR=53 THEN PRINT E53$ : BEEP : END
520 IF ERR=14 THEN PRINT E14$ : BEEP : RESUME *SORT
530 ON ERROR GOTO 0

 前回使ったソートのルーチンを使ってみたんですが、えらく遅いので、
夢中さんのアルゴリズム(a1033) を使わせて頂きました。

 入力テキストは'input.txt'、出力は'output.txt' となっています。
 余り大きなものを処理しようとすると、途中でメモリが無くなります(笑)

 作るのに時間がかかった割りには、相変わらず大したことはやってい
ません(^^; あ。while~wend をはじめて使ってみました(汗)

---
ps.

>p.s.「実行すると、そのプログラムのソースコードと同じ内容のものを出力する
>      プログラム」にしようかと思ったけど、やめた(^^;

1 LIST

 でOK(笑)


たぐれっと