• 締切済み

N88 BASIC 問題 プログラミングの仕方

プログラミング初心者なんですが次のプログラミングはどうやってするんでしょうか?? 個数がわからないデータ A1、A2、A3、・・・のデータを読み込み、この個数を求めるには??データの終わりはA=0と入力したときです。 そしてさらにこのデータを小さい順に並べるプログラムも、できたら教えてください

みんなの回答

回答No.3

ええと、あくまで「参考意見」です。 見たところ、問題の質から言うと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)
回答No.2

命令コードは覚えていないので雰囲気で データの個数の予想しえる最大値を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)
回答No.1

データーが入力されると Aが0かどうか判断する Aが0以外ならカウンターを1追加 最初に戻る Aが0なら終了処理 並び替える=ソートと言う http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/

関連するQ&A

  • プログラミングの問題です。c言語でお願いします。

    プログラミングの質問です。 c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 100個のデータを入力させ、プログラム実行者が定めるある値以上のものの個数 を表示する。 プログラミングわからないのでお願いします。

  • c言語でのプログラミング

    キーボードから複数個の正整数値を読み込み,合計値と平均値(小数第1位まで)を表示するプログラムを作りなさい。 ただし入力数値の個数はプログラミング時には決定していない。 負整数が入力されたら入力値はもうなくなったと判断することとし,負の数は計算には使用しないこととする。またデータは少なくとも1つは入力されるものとする。(p02ex15.c) 検証は1から10までの数字すべてを与え,合計値55,平均値5.5が表示されることを確かめること。 (「1,2,3,4,5,6,7,8,9,10,-1」(-1はデータ終わりの合図)を入力して確かめなさい。) また,1から5までの数字すべてを与え,合計値15,平均値3が表示されることを確かめること。 (「1,2,3,4,5,-1」(-1はデータ終わりの合図)を入力して確かめなさい。) このプログラムのソースコードを教えて下さい。 解説もよろしくお願いします。

  • 次のプログラミングがわかりません。

    次のプログラミングがわかりません。 Basicでのプログラミングです。 Visual Basicではありません。 Data "AA", 63, 80, 76 Data "AB", 70,100, 87 Data "AC", 69, 85, 48 ・ ・ ・ Data "ZX", 63, 37, 83 Data "ZY", 81, 40, 75 Data "ZZ", 35, 88, 98 という26^2個のデータがあり、氏名,英語の点数,数学の点数,国語の点数と並んでいます。 データの番号(上から順に番号をつけます。) を入力したとき,その番号の人の氏名,各科目の点数,順位,評価とします。 例えば、2を入力すると, Input  データ番号 2 名前 AB     英語   数学   国語  総合 点数 70 100 87 257 順位  437 1 169 93 評価 D A B A と表示するプログラムを作りたいです。 評価は順位から決めるものとし, 1~100:A 101~200:B 201~350:C 351~500:D 501~676:E と評価します。 まずは、データをすべて配列変数に読み込んでから,それを処理するという手順でのプログラムを教えてほしいです。 英語だけの処理でもかまいません。 Data文は、ファイルに添付しておきます。 よろしくお願いします。

  • プログラミングの問題なのですが

    学校の課題でプログラムを作らなければならないのですが、いまいちよくわからないので教えてください>< 1、インチ単位の数を引数として何cmかを出力する関数を作成しなさい。 2、f(x)=ax^2+bx+cのa,b,cを順に引数として、f(x)=0の実数解の個数を出力する関数を作成しなさい。 よろしくお願いします。

  • プログラミングC

    次のプログラムは、キーボードから5個の整数データを入力し、すべてのデータ入力が終わった後で、実行例に示すように、それらのデータを入力順とは逆の順序で表示するプログラムである。このプログラムが正しく動作するように下線部を埋め、プログラムを完成させなさい。 int ______,i; for(i=0;i<______;i++) { printf("NO.%d:",i++) scanf("%d", &a[i]); } for(i=4;_____;i++) printf("%d,",a[i]); printf("%d\n",a[0]); [実行例] No.1:5 No.2:3 No.3:8 No.4:2 No.5:2 2,2,8,3,5

  • プログラミングの問題です。

    プログラミングの質問です。 c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 年月日を数字8個で入力させ、「今日は○年○月○日です」と 表示させてください。 プログラミングわからないのでお願いします。

  • プログラミングの問題です。c言語でお願いします。

    プログラミングの質問です。 c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 10秒間、1秒間当たり5個得られる実験データを入力させ、それを 1秒ごとに平均した値として出力する。 プログラミングわからないのでお願いします。

  • c言語プログラミングの問題です。

    符号なし整数xを順に受け取り,xが5の倍数であればその数字を表示してプログラムを終了し,xが5の倍数でなければ次の入力に移るプログラムをdo-while文を用いて記述せよ. ただし,入力に5の倍数が含まれているものとする. どう記述すればいいですか。 冒頭の「順に受け取る」の意味が分かなくて手が付けられません。

  • プログラミングに関して

    プログラミング超初心者です。 今後、PCを用いて計測器を動かしたり、データを取り込んだりするプログラムを作製するようなスキルをみにつけたいのですが、初心者でもわかり易く要点を捉えている下記内容のようなものがありましたら、教えてください。また、アドバイス等も頂けたら幸いです。よろしくお願いいたします。 ・プログラミングの参考書 ・PCを用いた制御を行う上で参考となる本 etc...

  • プログラミングの質問です。

    c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 1.数字を5個続けて入力させ、大きい順に並び替え、出力する。(配列を使う事) プログラミングわからないのでお願いします。