• 締切済み

BASIC プログラム教えてください

RND関数を用いて1,2,3,4のいずれかの値がランダムに与えられた4つの添字付き変数 a(1), a(2), a(3), a(4) と,MAT INPUT文により入力された b(1), b(2), b(3), b(4) に対し, a(i)=b(i) が成り立つ i の個数 h をカウントして, h=4 となるまで「×」と表示させ,h=4 となったら「○」と表示させて終了するプログラム a(1), a(2), a(3), a(4) を FOR ~NEXT構文で表示させる方法 DO(UNTIL)~ LOOP構文でこのプログラムを作る方法が分かりません

みんなの回答

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

添え字の部分を変数にすればOK。 でもって添え字に当たる変数をループの判定に使う文字にすればヨシ。  FOR~NEXT文  DO~LOOP文 それぞれの使用例を(探して)見て考えてみてください。 ・・・ってか、BASICって、C言語やUNIXと同じで「方言」がキツイんです。 VISUAL BASICとかJIS Full BASICとかBASICの詳細を示さないとダメですよ。

rider88
質問者

お礼

アドバイスありがとうございました。

関連するQ&A

  • BASIC 教えてください

    MAT INPUT文により 配列 a(1), a(2), … , a(10) に入力された10個の値について,それらの 平均,分散,標準偏差,不偏分散およびその平方根 を順に計算し表示するプログラム。 (和を求めるときはFOR~NEXT構文を使う) ・ s1 = a(1)+a(2)+ … +a(10) を FOR~NEXT構文 を使って計算 ・  s2 = Σ1≦i≦10 ( a( i ) - m )^2 を FOR~NEXT構文 を使って計算 する方法が特に分かりません。 プログラム全体も教えていただけるとありがたいです。

  • VBAでこのプログラムの作り方

    最近VBAを勉強し始めた初心者です。 Excel上でコマンンドボタン1つで D18~H18からD22~H22の5×5の25マス(Aシート) と M18~Q18からM22~Q22の5×5の25マス(Bシート) それぞれに1~75の乱数を同時に発生させ一定時間、数字を回転させたあと数字を表示させたいのですがどのようなプログラムを組めばよろしいですか? ただしAシート内での数字の重複、Bシート内での数字の重複は起きないものです。 AシートとBシートの数字の重複はOKです。 数字はAシート25マス、Bシート25マス全て同時に回転させたいです。 乱数を回転させ数字を表示させるプログラムは For = i = 0 To 100  Range("○○").Value = Int(Rnd * 75) + 1 Next i です。 よろしくお願いします。

  • Visual Basic の簡単な問題なのですが、分からないので教えてください><

    私は大学の情報の講義で、Visual Basic を習っているのですがちょっとお聞きしたい問題があるのですが、VBに知識のある方回答お願いしますm(_ _"m)ペコリ [問題]1から10までの2乗和を求めて値を表示する3つのプロシージャex1,ex2,ex3をFor~next構文、While~Wend構文、Do Until~Loop構文をそれぞれ用いて完成させよ。 上記のような問題なのですが、For~Next構文は分かりました! Sub ex1() Dim s,n As Integer s=0   For n = 1 To 10   s = s + n^2   Next n  Msgbox s End sub For~Nextは多分これであってますかね?しかし、While~Wend構文とDo Until~Loop構文でのプログラムが考えましたが分からなかったので、分かる方、回答お願いします。 よろしくお願いします<(_ _)>

  • Loopとフリーズ

    数ヶ月前からVBを始め、プログラムを組んでいる者です。 VB6.0を使用しています。 I/0ボードを用いてロボットの信号を受け取れるような環境を作りました。 『Do Until~Loop』処理で、信号を監視させているのですが、 プログラムを実行させるとCPU=100%になり、フリーズします。 『Do Until~Loop』処理の代わりになるような処理はないでしょうか? 以下に少し詳しく書き込んでおきますので、 よろしくお願いします。 信号Aは1(ON)と0(OFF)のどちらかの信号を常に出しています。 (タイミングは機械が制御しています) 信号Bも1(ON)と0(OFF)のどちらかの信号を常に出しています。 (タイミングはランダムです) <目的> 信号Aが1のとき、信号Bの信号を受け取り、 信号Aが0のとき、信号Bの信号は受け取りません。 <アルゴリズム> (1)信号Aが1になるまで『Do Until~Loop』処理を行う  待機させる (2)信号Aが0になるまで『Do Until~Loop』処理を行う  その処理の中で、信号Bの信号を常に監視させる

  • N88相互Basic for Windows95でのプログラム

    初めて質問いたします。 ただいまN88相互Basic for Windows95というソフトを使用して「1~45の数字をランダムに並べて表示する」というプログラムを作成してみたのですが、どうしても数字が重複してしまうのです。どこが間違っているのか教えてください。 下記に自分の作成したプログラムを記入します。又、より効率のいい書き方があれば教えてください。よろしくお願いしますm(_ _)m 10 cls 20 input "今日は何月";tuki 30 input "何日";niti 40 for a=0 to tuki 50 for b=0 to niti 60 seki=rnd 70 next b 80 next a 90 cls 100 dim x(50) 110 x(0)=0 120 for s=1 to 45 130 x(s)=int(rnd*45) 140 for c=0 to s-1 150 if x(s)=x(c) or x(s)<1 then x(s)=int(rnd*45):goto 150 160 next c 170 if s=10+e then e=e+10:q=q+1 180 locate q*3,s-e:print x(s) 190 next s 一応流れとしましては、 「月と日を入力してランダムさを出す」 ↓ 「1~50のデータ数があるのを定義する」 ↓ 「今決めているデータの数字と今まで決めたデータの数字を比較して一緒か1未満なら決めなおす」 ↓     ↑ 「今までのと比較して、一緒じゃないなら数字を表示して次のデータへ」 という流れにしている予定ですが、どうやっても数字が重なってしまうので改善点があれば教えてください。お願いしますm(_ _)m

  • C#についてです

    乱数を発生させて、折れ線グラフを作りたいのですが、分かりません。 乱数を15個、100までの範囲で発生させたかったので、下のように書いては見ました。      Random rnd = new Random(); for (int i = 0; i < 15; i++) { rnd.Next(100); } この乱数を、配列にして、グラフを作りたいと思っています。 配列にするにはどうすれば、よいのでしょうか? お願いいたします。

  • vba doloopで=>が機能しません

    vbaでa1:a4にランダムで◯を入れて、a5で◯の数を数えます。 その時a5の数が3以上になるまでランダムで入れ、3以上ならb1:b4にランダムで◯を入れて、b5が3以上なら、c1:c4、、、をAd(30回)までしたいのですが、◯の数が3以上じゃなくても隣のセルに行って処理を初めてしまいます。 どうしたら3以上になるまでをすることができますか? 今は dim i as long for i=1 to 30 do until range("a5")=>3 ランダムに入れる処理 loop next i でやってます。 fornext 使わずに1つずつコードを作ればできるのですが、直す時大変だし、重くなるので、、

  • Javaで数独の自動解法プログラム

    Javaで次のようなプログラムを作りました。 次に、ここから実行で得られた数独を自動解法プログラムによって、解が「1つ or 複数」かを調べるようにしたいのですが、その自動解法プログラムは新しく作らなければいけないのでしょうか。 import java.util.Random; public class NumberPlace { public static void main(String[] args) { int i, j, k, l, m, n, check=0, count=0, tmp; int a[][] = new int [9][9]; Random rnd = new Random(); int ran; Random rnd1 = new Random(); int ran1; Random rnd2 = new Random(); int ran2; boolean A=false; while(A==false){ A=true; for ( i=0; i<9; i++ ) for ( j=0; j<9; j++ ) a[i][j] = 0; count = 0; for ( i=0; i<9; i++ ) { for ( j=0; j<9; j++ ) { ran = rnd.nextInt(9); tmp = ran + 1; check = 0; //System.out.println(tmp); for ( k=0; k<j; k++ )  //横列に入る数字をチェック if ( a[i][k] == tmp ) check = 1; for ( k=0; k<i; k++ )  //縦列に入る数字をチェック if ( a[k][j] == tmp ) check = 1; for ( k=(i/3)*3; k<(i/3)*3+3; k++ )  //ボックスに入る数字をチェック for ( l=(j/3)*3; l<(j/3)*3+3; l++ ) if ( a[k][l] == tmp ) check = 1; if ( check == 0 ) a[i][j] = tmp; if ( check == 1 ) j--; if ( count > 50000 ){ A=false;break;} count++; } count = 0; } } for ( i=0; i<30; i++ ) {    //0を入れる回数 ran1 = rnd1.nextInt(9); m = ran1; ran2 = rnd2.nextInt(9); n = ran2; if ( a[m][n] == 0 ) {  //0にしようとした場所が既に0だったら直前に戻る i--; } a[m][n] = 0; } for ( i=0; i<9; i++) { for ( j=0; j<9; j++ ) { if ( a[i][j] < 10 ) { System.out.print(" "); } System.out.print(a[i][j]);       } System.out.print("\n"); } } } これを(最初に入れる0の数を30個として)実行すると、次のようになります。 0 7 6 9 4 1 8 2 5 2 0 5 3 7 0 9 4 0 9 0 4 8 2 5 0 3 7 1 0 2 0 0 0 5 0 6 6 9 3 1 0 0 0 8 2 7 0 8 0 0 0 0 1 4 0 0 0 0 0 0 0 0 3 4 3 0 5 6 8 2 7 9 5 2 9 4 3 7 0 0 8 皆さんの回答の程宜しくお願いします。

  • プログラム(BASIC) 教えてください

    (1) INPUT文で入力した整数 k に対し, 3, 5, 7, 9 のいずれかの値をランダムに等確率で発生し,改行せず横に続けて k個 表示させるプログラム (2)初項 a ,公差 r ,長さ n の等差数列 a, a+r, a+2r, ..., a+(n-1)r のいずれかの値を等確率で発生させるためには,乱数をどのような式で作れば良いか? INPUT文で与えられた a, r, n, k に対して,この等差数列のいずれかの値をランダムに k 個表示させるプログラム (1)は0,2,4,6を考えてから+3すればいいと思うのですがランダムに0,2,4,6を表示するプログラムの仕方が分かりません。 10 INPUT k 20 FOR L=1 TO k 30 RANDOMIZE 40 PRINT INT(   )+3; 50 NEXT L 60 END 解説があるとありがたいです。

  • 99BASICプログラムの乱数の計算について

    学校で出た問題で、サイコロを2個振り、(乱数生成で代用)出た目の和がどのような 確率で分布するか調べなさい、と出たのですが、問1のプログラムがあっているのかと、問2を ヒントだけでも教えてください。お願いします。 問題↓ 回数を記憶する配列 f( ) を用意 1 r1=rnd(6)+1:r2=rnd(6)+1  2個のサイコロを振るr1、r2は1から6の目を生成 2 r=r1+r2 出た目の和を求める 3 f(r)=f(r)+1 和がrである回数を求める 4 1から3までを50000回繰り返す 5 cint(f(r)/f(2))をr=2からr=12まで順に表示する 問1 アルゴリズムに沿ったプログラムリストを示せ 問2 cint(f(r)/f(2))の表示結果を示し、簡単にその妥当性を検討せよ で、書いたプログラムが 10 dim f(12) 20 for i=1 to 50000 ←ここでサイコロを振る回数を決める? 30 r1=rnd(6)+1:r2=rnd(6)+1 40 r=r1+r2 50 f(r)=f(r)+1 60 next i 70 for i=1 to 6 80 print cint(f(r)/f(2)) 90 next i 100 end で、結果が縦に3が6個ならんだのですが、問1はこれでいいのでしょうか。 問2の妥当性ってどういうことでしょうか。