プロが教える店舗&オフィスのセキュリティ対策術

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はここに書けません  )が必要です」と表示されたことがあります。
何がおかしいのかぜひ教えてください。

A 回答 (4件)

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/04 16:06

「Nはここに書けません  )が必要です」が出るのは、a(2n)と書いているからでしょう。


a(2)やa(n)と書くのは問題ありませんが、2nは数字でも変数でもないのでBASICがエラーを出します。
数式の2nは2*nと書かないとだめです。
    • good
    • 0
この回答へのお礼

単純な事でしたね…

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

お礼日時:2008/07/04 16:03

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



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

まさか、んなことはないですよねぇ?
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/04 16:10

多分n=3まで行きますのでこのとき


a(2n)=a(6)となり
配列宣言
DIM a(4)
で宣言した要素数を超過してしまう事が原因かも知れません。
DIM a(6)と配列宣言の要素上限数を6以上に設定してみてください。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2008/07/04 16:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!