こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

10進ベーシックの質問

a(1)=1、 a(2n)=a(n) のとき a(4) のプログラムを組みたいのですが、

DIM a(4)
LET a(1)=1
LET n=1
DO WHILE n<4
LET a(2n)=a(n)
LET n=n+1
LOOP
PRINT a(n)
END

とプログラムしたら、LET a(2n)=a(n)のところで
「Nはここに書けません  )が必要です」と表示されました。
LETにはNを書いてはいけないのですか?それとも私のプログラムが間違っているのですか?
今までにも何度か LETのところで「Nはここに書けません  )が必要です」と表示されたことがあります。
何がおかしいのかぜひ教えてください。

投稿日時 - 2008-07-02 17:38:00

QNo.4146151

すぐに回答ほしいです

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

DIM a(4)
LET a(1)=1
LET n=1
DO WHILE n < 4 / 2 + 1
REM 1点目。2nという表記が出来ない。2*nと書かないと。
REM 2点目。1点目を直したとしても
REM a(2) = 1
REM a(4) = a(2) つまり 1
REM a(6) = a(3)
REM という処理が行われるが,a(6)は定義されないためエラーが出る。
REM a(3)の初期値は多分0となっているとは思うが
REM 自信ないので自分で値を代入するコードを書いておいて欲しい

LET a(2*n)=a(n)
LET n=n+1
LOOP
PRINT a(4)
END

投稿日時 - 2008-07-02 17:48:24

お礼

わかりやすいご返答ありがとうございました。

投稿日時 - 2008-07-04 16:06:35

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

「Nはここに書けません  )が必要です」が出るのは、a(2n)と書いているからでしょう。
a(2)やa(n)と書くのは問題ありませんが、2nは数字でも変数でもないのでBASICがエラーを出します。
数式の2nは2*nと書かないとだめです。

投稿日時 - 2008-07-02 19:28:31

お礼

単純な事でしたね…

ご回答、ありがとうございます。 

投稿日時 - 2008-07-04 16:03:30

ANo.3

多分、違うと思いますが(かなり想像力をたくましくしてみたので)

正の整数値をとるnに対して関数a(n)の値を求めるプログラムを作りたい。
a(n)は次の条件を満たすものとする。
a(1)=1、 a(2n)=a(n)。

まさか、んなことはないですよねぇ?

投稿日時 - 2008-07-02 18:46:27

お礼

ご返答ありがとうございました。

投稿日時 - 2008-07-04 16:10:04

ANo.2

多分n=3まで行きますのでこのとき
a(2n)=a(6)となり
配列宣言
DIM a(4)
で宣言した要素数を超過してしまう事が原因かも知れません。
DIM a(6)と配列宣言の要素上限数を6以上に設定してみてください。

投稿日時 - 2008-07-02 17:52:23

お礼

わかりました。もう一度やってみます。

ご返答ありがとうございました。

投稿日時 - 2008-07-04 16:09:30

あなたにオススメの質問