9

私のプログラムには次の変数宣言があります。

X="MAGENTA"
Y="CYAN"
Z="TAN"
A="KHAKI"

今私が欲しいのは、これらの1つとそれをランダムに選択するPRINTことです。しかし、これを行う方法は?

4

3 に答える 3

5

私のBASICはかなり錆びていますが、次のようなものを使用できるはずです。

10 X$ = "MAGENTA"
20 Y$ = "CYAN"
30 Z$ = "TAN"
40 A$ = "KHAKI"
50 N = INT(RND(1) * 4)
60 IF N = 0 THEN PRINT X$
70 IF N = 1 THEN PRINT Y$
80 IF N = 2 THEN PRINT Z$
90 IF N = 3 THEN PRINT A$

または、コードを再利用するためにサブルーチンに入れます。

  10 X$ = "MAGENTA"
  20 Y$ = "CYAN"
  30 Z$ = "TAN"
  40 A$ = "KHAKI"
  50 GOSUB 1000
  60 PRINT RC$
  70 END

1000 TV = INT(RND(1) * 4)
1010 IF TV = 0 THEN RC$ = X$
1020 IF TV = 1 THEN RC$ = Y$
1030 IF TV = 2 THEN RC$ = Z$
1040 IF TV = 3 THEN RC$ = A$
1050 RETURN

もちろん、おそらくそのようなことには配列を使用する必要があるので、次のように使用できます。

10 DIM A$(3)
10 A$(0) = "MAGENTA"
20 A$(1) = "CYAN"
30 A$(2) = "TAN"
40 A$(3) = "KHAKI"
50 PRINT A$(INT(RND(1)*4))
于 2010-10-12T02:49:14.950 に答える
1

上記の答えは正しく、包括的です。

一方、この答えはそうではありませんが、私は先月、Commodore BASICを少しやっていて、文字列のインデックス作成が役立つ場合があると判断しました。そのため、問題を再構成するような答えはありません。

100 X$ = "MAGENTACYAN TAN KHAKI " 110 PRINT MID$(X$,INT(RND(1)*4)*7, 7)

このコードは、0から3までのランダムなintを取得し、それを使用して、開始インデックスを検索し、4つのエントリすべてを含む単一の文字列を検索します。各エントリは(必要に応じて)7文字に埋め込まれます。MID $の最後のパラメーターは抽出される部分文字列の長さであるため、このパディングが必要です。

なぜBOTHER?

配列のインデックス作成を検討する場合: (1) when your string data is near-uniform length, and (2) when you have a LOT of little strings.

これらの2つの条件が当てはまる場合、データを含む完全なコードはよりコンパクトになり、より少ないポインターを割り当てるため、より少ないメモリーを使用します。

PSボーナスポイントは、私が1つずつエラーを犯したことに気付いた場合です。

于 2019-10-15T17:21:12.327 に答える
0

これを行う別の方法は、出力に1つの変数を使用し、[1..4]の範囲の乱数に基づいてON..GOSUBを設定することです。

10 ON INT(RND(1)*4+1) GOSUB 100,110,120,130 20 PRINT A$ 30 END 100 A$ = "MAGENTA":RETURN 110 A$ = "CYAN":RETURN 120 A$ = "TAN":RETURN 130 A$ = "KHAKI":RETURN

于 2019-10-22T14:23:08.373 に答える