HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0413
名前1atanでエラー31が出てしまいます2解決


名前1

リンク

2016/4/13(Wed) 23:51:58|NO.75219

1/2の確率でaが出るようにしたいのですが;を消してifを有効にして実行するとatanのところで、
エラー31 "異なる型を持つ配列変数に代入しました" が出ます。エラーが出ないときもあります。
原因は何でしょうか?



screen 0,500,500 randomize dim x,5 dim y,5 dim a,5 foreach x ;if rnd(2) == 1{ x(cnt) = rnd(500) y(cnt) = rnd(500) a(cnt) = atan(250 - y(cnt),x(cnt) - 250) * 180 / 3.141592 pos x(cnt),y(cnt) mes "a="+a(cnt) ;} loop



この記事に返信する


Houtou

リンク

2016/4/14(Thu) 00:09:48|NO.75220

こんにちは。
このスクリプトでエラーが表示されるのは、
答えが実数(小数)で帰ってくるatan関数を整数配列変数dimのaに代入しているからです。
例えば、
dim a,5
a(0)=1.5 a(1)=1.2
というコードの場合、HSP側が自動的にaを実数の配列変数に変換してくれますが、
dim a,5
a(0)=5 a(1)=1.2
だと、aに整数"5"と小数の"1.2"が代入されるためエラーが出ます。

あなたのコードの場合、rnd(2)=0になるとaに整数"0"が代入され、
rnd(2)=1になるとaに小数が代入されるためにエラーになることがあります。

ですので、
dim a,5

の部分を
ddim a,5
に変更すればエラーはなくなります。



名前1

リンク

2016/4/14(Thu) 10:54:04|NO.75224

解決しました。
本当にありがとうございます。



ONION software Copyright 1997-2021(c) All rights reserved.