- 締切済み
N88 BASIC 問題 プログラミングの仕方
プログラミング初心者なんですが次のプログラミングはどうやってするんでしょうか?? 個数がわからないデータ A1、A2、A3、・・・のデータを読み込み、この個数を求めるには??データの終わりはA=0と入力したときです。 そしてさらにこのデータを小さい順に並べるプログラムも、できたら教えてください
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- cametan_42
- ベストアンサー率62% (162/261)
ええと、あくまで「参考意見」です。 見たところ、問題の質から言うとBASICで書くには長くなっちゃって辛い問題なんじゃないかな、と言う気がします。平たく言うとBASIC向きじゃないんじゃないか、と。 プログラミング初心者、との事ですが、「問題に依っては言語には向き/不向きがある」って場合があるんですよね。 恐らくCommon Lispの方が簡単に書けるんじゃないか、と思って書いてみたらやっぱその通りのようです。8行程度で簡単に実装出来ますね。 次にCommon Lispでのソースコードを載せておきます。参考にして下さい。 ;;ここから (defun QNo.3571398 () (let ((msg "データを入力して下さい>"));プロンプトのメッセージ (labels ((loop (prompt a ls);局所関数loopを定義 (if (zerop a);脱出条件 (values (length ls);リストの長さ (sort ls #'<));リストのソート (loop (format t msg) (read) (cons a ls))))) (loop (format t msg) (read) nil)))) ;;ここまで 多分、次のような動作をさせたいんじゃないか、と思います。上のソースをCommon Lisp(例えばClispと言うフリーウェア)で走らせると以下のようになります。要求に合ってますか? ;;実行例 [1]> (QNo.3571398) データを入力して下さい>3 データを入力して下さい>5 データを入力して下さい>7 データを入力して下さい>1 データを入力して下さい>3 データを入力して下さい>9 データを入力して下さい>8 データを入力して下さい>0 7 ; (1 3 3 5 7 8 9) ;;お終い Common Lispの場合は「多値関数」と言う機能があって、これによりリスト(Basicで言う配列の一種)の長さとソート済みのリストの結果を同時に返す事が出来ます。上で言うと「長さ」が「7」でソート済みのリストが(1 3 3 5 7 8 9)って事ですね。 まあ、プロンプトを自作/表示するかどうかは好みの問題ですし、僕はBASICは良く分からないのですが、原則、入力に用いる「変数」と「配列」を別々に設定し、if~then構文を使って、変数に0を代入された時にループを脱出して結果表示、そうじゃなかったら変数に「データを読み込み」、そして前回の変数を配列にどんどん突っ込んでいけば良いとは思います。 また、繰り返し計算のDo~Loop構文を使えばBasicでも何とかなるかもしれません(Common Lispのソースでは再帰を用いています)。 ただし、Common Lispのソースコード内ではリストの長さを調べるlength関数とリストの要素を並べ替えるsort関数を用いましたが、Basicで似たようなライブラリが無いと、実装はかなり難しいかもしれません。
- at121
- ベストアンサー率41% (85/206)
命令コードは覚えていないので雰囲気で データの個数の予想しえる最大値を100と過程 変数 A(0)からA(99)、Asort(0)から DIM Ain'入力 DIM AA(100)'データin DIM B'要素番号 DIM Asort(100)'データout(ソート) DIM C'要素番号 DIM N'データの個数 N=0 '入力AA(B) 0入力まで FOR B=0 TO 99 INPUT "数値入力="; Ain IF val(Ain)=0 THEN B=99 ELSE A(B)=val(Ain):N=N+1 NEXT PRINT N IF N=0 THEN END'入力なしなら終了 '入力A(B)ソート⇒Asort(C) FOR C=0 TO N-1 FOR B=0 TO N-1 IF A(B)<>0 and A(B)<Asort(C) THEN Asort(C)=A(B):A(B)=0 NEXT NEXT '出力印字 FOR C=0 TO N-1 PRINT Asort(C)'入力の小さい順に印字 NEXT END
- Pesuko
- ベストアンサー率30% (2017/6702)
データーが入力されると Aが0かどうか判断する Aが0以外ならカウンターを1追加 最初に戻る Aが0なら終了処理 並び替える=ソートと言う http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/