N88互換BASICで「メッセージの定義されてないエラーです」と出ます

このQ&Aのポイント
  • 最近プログラミングを始めた初心者です。プログラムでエラーが出て困っています、どこが問題なのか改善方法を教えてください。
  • 配列変数を作って、Bの数値を全ての配列変数に代入したいです。
  • N88互換BASICのプログラムで、「メッセージの定義されてないエラーです」と表示される問題について教えてください。
回答を見る
  • ベストアンサー

N88互換BASICで「メッセージの定義されてないエラーです」と出ます

N88互換BASICで「メッセージの定義されてないエラーです」と出ます… 最近プログラミングを始めた初心者です。 プログラムでエラーが出て困っています、どこが問題なのか改善方法を教えてください。 10 DIM A(100,100,100) 20 INPUT "B=";B 40 FOR i=1 to 100 step 1 50 FOR j=1 to 100 step 1 60 FOR k=1 to 100 step 1 70 A(i,j,k)=B 80 print A(i,j,k) 90 NEXT k 100 NEXT j 110 NEXT i こんな感じのものです。 配列変数を作って、Bの数値を全ての配列変数に代入したいです。 宜しくお願致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • BuriBuri4
  • ベストアンサー率28% (150/525)
回答No.1

10 DIM A(100,100,100) で約4MByteのメモリーが必要ですが、N88互換BASICでこのサイズの配列は取れないのでは? 単純にスケールダウンして↓で動くならOut of Memoryエラーです。 10 DIM A(10,10,10) 20 INPUT "B=";B 40 FOR i=1 to 10 step 1 50 FOR j=1 to 10 step 1 60 FOR k=1 to 10 step 1 70 A(i,j,k)=B 80 print A(i,j,k) 90 NEXT k 100 NEXT j 110 NEXT i

ponntata
質問者

補足

なるほど・・・ その通りでした、DIM A(10,10,10)の場合は正常に動きました。 A(100,100,100)はサイズオーバーなのですね・・・; A(10,10,10)では 10*10*10=1000個の配列が出来ますが、 仮に100*100*100=100万個の配列が取りたい場合は、何か方法が有りますでしょうか? 無理でしたら、100万個の配列を取る事が可能で、N88互換BASICのように無償で手に入るものは有りますでしょうか?

関連するQ&A

  • 数学のBasicなのですが・・。

     数学のコンピューターを独学でやり始めたのですが、分からないことがたくさんあって、頼れる人がいなくて質問したのですが、  配列変数とかいうのがよく分からなくて、   DIM 変数名(n)  っていうのは、番号つき変数を0からn番まで用意するということは分かりました。  ○配列変数→大量のデータを一気に出力という題目のところがありまして、  ■N個の数値を入力して、逆の順序で出力するプログラム  10 INPUT ”データ数”;N  20 DIM A(N)  30 FOR K=1 TO N  40 INPUT ”データ”;A(K)  50 NEXT K  60 FOR K=1 TO N  70 I=N+1-K  80 PRINT A(I);  90 NEXT K  100 END  で まず、 10行目はデータ数って書いてあって、40行目はデータと書いてあって、その違いが分かりません。    それとFOR~NEXT文は挟まった動作を繰り返すんですよね!?  で、60行目と90行目は2文挟まっているのですが、この2文とも繰り返すということなのでしょうか?  分かってる方にとってはくだらない質問と思いますが、どうか教えてください。  お願いします。

  • 離散フーリエ変換について

    10 REM dft 20 N=8 30 DIM A(N),B(N),X(N) 40 FOR I=0 TO N-1 50 READ X(1) 60 NEXT I 70 P=6.283/N 80 FOR K=0 TO N-1 90 A(K)=0:B(K)=0 100 FOR J=0 TO N-1 110 A(K) =A(K)+X(j)*COS(P*J*K) 120 B(K) =B(K)-X(J)*SIN(P*J*K) 130 NEXT J 140 NEXT K 150 FOR I=0 TO N-1 160 Y=SQL(A(I)^2+B(I)^2) 170 LPRINT I;:LPRINT USING "###,###";A(I),B(I),Y 180 NEXT I 190 DATA 1,1,1,1,0,0,0,0 このDFTプログラムをC言語に直したいのですがよく分かりません; お願いします@@;

  • Basicでのプログラムなのですが・・・

    配列変数についてなのですが、 『20個のデータを入力し、大きい順に並べて表示するプログラム。』 なのですが… 言語:【BASIC】 ソフト:【N88】 を使用しています。 とりあえず、 10 DIM A(20) 20 FOR I=1 TO 20 30 INPUT A(I) 40 NEXT I まではわかるのですが、ここから先がわかりません。 ここから先はどのようにすればいいでしょうか。 どなたかご教授いただけると幸いです。

  • N88互換BASICを使ったFOR文について質問があります。

    N88互換BASICを使ったFOR文について質問があります。 例えば… input "a";a FOR i=1 to 5 step 1 b=i*a next と言う文があったとして、答えとして出力しているbを、1回目の計算、2回目の計算… と毎回の計算で違う数値変数にする事は可能でしょうか? 例えば、1回目a1=1 二回目a2=2 三回目a3=3と言った具合にです。 よろしくお願いします。

  • basic プログラムです。

    100 DIM A(5) 110 FOR J=1 TO 5 120 READ A(J)   130 NEXT J   140 FOR I=1 TO 4  150 LET K=1    160 FOR J=I+1 TO 5  170 IF A(J)<A(K) THEN LET k=J  180 NEXT J    190 LET T=A(I)    200 LET A(I)=A(K)   210 LET A(K)=T    220 FOR J=1 TO 5   230 PRINT A(J);   240 NEXT J     250 PRINT      260 NEXT I     270 DATA 5,3,7,2,1,  280 END を実行すると 13725 31725 31275 71235 という数字が出てきます。 どうしてこのような結果が出るのか 解説をお願いします。

  • BASICでの波形合成

    学校でのBASICの宿題で、複数のSIN波を合成する問題で 100 CLS 3:LINE(0,240)-(640,240),7 110 INPUT"基本波の周期は";C 120 INPUT"基本波の振幅は";W 130 INPUT"基本波の移送は";F 140 INPUT"第何倍音まで計算する";N:DIM A(N),B(N) 150 FOR I=1 TO N 160 PRINT I;:INPUT "番目の倍音の振幅は";A(I) 170 PRINT I;:INPUT "番目の倍音の移送は";B(I) 180 NEXT I 190 FOR K=0 TO 360/C*2*3.14159# STEP 3.14159#/90 200 X=C*K-F:Y=-(W*SIN(K))+240:LINE-(X,Y),4 210 NEXT K 220 FOR G=1 TO N:PSET(0,240),3 230 FOR H=0 TO 360/C*2*3.14159# STEP 3.14159#/90 240 X=C/(G+1)*H-B(G):Y=-((A(G))*SIN(H))+240:LINE-(X,Y),3 250 NEXT H,G ここで描いたSIN波を合成した波を描く方法が分からない状態です。 どうにも解決できないのでここに質問しました。どなたか分かる方がいたら教えてください。

  • basicプログラムです。

    100 DIM A(5) 110 FOR J=1 TO 5 120 READ A(J)   130 NEXT J   140 FOR I=1 TO 4  150 LET K=I    160 FOR J=I+1 TO 5  170 IF A(J)<A(K) THEN LET k=J  180 NEXT J    190 LET T=A(I)    200 LET A(I)=A(K)   210 LET A(K)=T    220 FOR J=1 TO 5   230 PRINT A(J);   240 NEXT J     250 PRINT      260 NEXT I     270 DATA 5,3,7,2,1,  280 END このようなプログラムがあります。 いろいろ調べたのですがそれぞれの文の意味と 何を求めるプログラムか教えて下さい。 5つの数の組み合わせで小さい数から順番に4個 かなと思ったのですが???

  • 文字制限方法。

    どなたか知識ある方、教えてください。 ソートプログラムの演習をしているんですが、 どのように書いていいか悩んでます。現在の課題はtextが10個あり、sortボタンをクリックすると左から数字を小さい順に並びます、数字のみ入力可、空白でもエラーなしで(全て空白はエラー)とりあえず数字があれば10個埋めていなくても並べる、文字等はエラーを出したいです。 '配列のインデックス番号の開始に1を設定 Option Base 1 Option Explicit Private Sub cmdCLEAR_Click() '変数の宣言 Dim ans As Integer Dim i As Integer '消去する際の確認事項 ans = MsgBox("消去していいですか?", vbYesNo + vbQuestion) Select Case ans Case vbYes For i = 1 To 10 Step 1 Text(i).Text = "" Next i Case vbNo MsgBox "取り消します", vbInformation End Select End Sub Private Sub cmdSORT_Click() '変数の宣言 Dim intNum(10) As Integer Dim S As Integer Dim j As Integer Dim k As Integer Dim i As Integer '配列の整理 For i = 1 To 10 Step 1 intNum(i) = Int(Text(i).Text) Next i 'バブルソート For k = 1 To 9 Step 1 For j = 1 To 9 Step 1 If intNum(j) > intNum(j + 1) Then S = intNum(j) intNum(j) = intNum(j + 1) intNum(j + 1) = S End If Next j Next k '結果を返して表記する For i = 1 To 10 Step 1 Text(i).Text = intNum(i) Next i End Sub 現在書いたのはここまででどうしてもエラーと文字制限の方法はわからないので教えていただける方、宜しくお願いします。

  • エクセルVBA カウンタ2つを入れ子にしたくない時

    皆さんこんにちは。 エクセル2013を使用しております。 エクセルVBAの繰り返し処理について質問させていただきます。 下記のコードですと入れ子があるので A1にi、A3にi・・・・を一通り記載したあと またA1にi+2、A3にi+2・・・を繰り返し 最終的にA列には全て同じ値が入ってしまいます。 (Step 2にしたのはA1:A2のように2行毎の結合セルだからです) -----------------------------------------------------------------    Dim i As Long Dim j As long Dim n As long Dim k As long     i =Userform.textbox1.value     j =Userform.textbox2.value    For k =i To j Step 2 For n = 1 to j Step 2 Range("A" & n) = k    Range(”B”&n)=k+1        Next    Next ---------------------------------------------------------- もしiが1、jが10だとしたら A1に1、B1に2、A3に3、B3に4、・・・A9に9、B9に10 が入るようにするにはどうしたら良いでしょうか。 iが必ず1から始まるのであればまだ分かるのですが そうとも限らないので カウンタはやはり2つ必要だと思うのですが カウンタが2つあるのに入れ子にしないコードの書き方って あるのでしょうか。 いくら本やネットを見ても分かりません。 ご教授いただけると幸いです。

  • VB2010での連立方程式の計算

    VB2010でガウスの消去法のプログラムを作りたいんですが、うまく解が求まらないのでメールしました。今回の例は未知数8です。ちなみにVBは初心者です。 Myarrayは、列の1-8個目までが、各未知数の係数、9個目が整数を表しています。 行は式を表していて、未知数が8個あるので8行あります。 Dim MyArray(,) As Double = {{-1, 1, -1, 1, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 0, -1}, {0, 0, 0, 0, 0, 0, 0, 1, -1}, {0, 0, 0, 0, 1, 1, 1, 1, 0}, {0, 0, 1, 0, 0, 0, -1, 0, 0}, {0, 2, 0, 0, 0, -2, 0, 0, 0}, {-6, 2, 0, 0, 0, 0, 0, 0, 0}, {6, 2, 0, 0, 0, 0, 0, 0, 0} } Const N = 8 Dim i, j, k, l, pivot As Integer Dim x(N) As Double Dim p, q, m As Double Dim b(1, N + 1) As Double For i = 0 To N - 1 Step 1 m = 0 pivot = i For l = i To N - 1 Step 1 'i列の中で一番値が大きい列を選ぶ If System.Math.Abs(MyArray(l, i)) > m Then m = System.Math.Abs(MyArray(l, i)) pivot = l End If Next 'pivotがiと違えば、行の入れ替え If pivot <> i Then For j = 0 To 8 Step 1 b(0, j) = MyArray(i, j) MyArray(i, j) = MyArray(pivot, j) Myarray(pivot, j) = b(0, j) Next End If Next For k = 0 To N - 1 Step 1 p = Myarray(k, k) '対格要素を保存 MsgBox(p) MyArray(k, k) = 1 '対格要素は1になることが分かっているので代入 For j = k + 1 To N Step 1 MyArray(k, j) = MyArray(k, j) / p Next For i = k + 1 To N - 1 Step 1 q = MyArray(i, k) For j = k + 1 To N Step 1 MyArray(i, j) = MyArray(i, j) - q * MyArray(k, j) Next '0となることが分かってるので代入 MyArray(i, k) = 0 Next Next '解の計算 For i = N - 1 To 0 Step -1 x(i) = MyArray(i, N) For j = N - 1 To i + 1 Step -1 x(i) = x(i) - MyArray(i, j) * x(j) Next Next MsgBox(x(0)) MsgBox(x(1)) MsgBox(x(2)) MsgBox(x(3)) MsgBox(x(4)) MsgBox(x(5)) MsgBox(x(6)) MsgBox(x(7)) 出力結果としてNAN(非数値)と出てきてしまいます。原因は、pに0が入ってしまっていることがあるからだと思いますが、これを回避する方法はないでしょうか?ご教授よろしくお願いします。

専門家に質問してみよう