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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0716
コウノトリ変化するはずの数値が変化しない汗7解決


コウノトリ

リンク

2016/7/16(Sat) 13:48:47|NO.76209

mes で 表示しているVについて、本来は数値が変化する筈なのですが、変化しません。なぜ変化しないのか、原因を突き止めてください、お願いします!
*rronnbunn
randomize cls En=0.0 num=0 : V=0.0 : time=0 : n=0 : nn=0 : porm=0 : snum=rnd(10000) : tnum=0 : en=rnd(10000) ddim E,100 ddim sn,100 *mainloop num=0 repeat 100//100は可変、→∞に randomize sn(num)=rnd(10000) num=num+1 loop num=0 tnum=0 repeat 100//100は可変、→∞に title ""+num randomize tn=tnum S(num)=(sin(((snum+tnum)*M_PI)/180)+1)-(sin(((sn(num)+tn)*M_PI)/180)+1) porm=rnd(1) if porm=0{ S(num)=S(num) } else if porm=1{ S(num)=-S(num) } E(n)=1.0/(absf(S(num))+1) wait 1 cls En=En+E(n) num=num+1 n=n+1 tnum=tnum+1 loop V=En*(sin(((en+time)*M_PI)/180)+1)//ラジアン化必須 mes "Value of the PF:"+V wait 1 cls time=time+1 goto *mainloop



この記事に返信する


OKURA

リンク

2016/7/16(Sat) 14:07:53|NO.76210

すべての変数をdoubleに変換してみたら?



沢渡

リンク

2016/7/16(Sat) 14:09:42|NO.76211

変数名は大文字と小文字を区別しないので、Enとenは同じ変数として扱われてしまいます。
どちらかの変数の名前を変えれば上手くいくのではないかと。



コウノトリ

リンク

2016/7/16(Sat) 14:55:45|NO.76212

沢渡さん!ビンゴでした!!僕は他の言語もやってたのでてっきり大文字と小文字は区別されるものだと思っていたのですが区別されなかったのですね!勉強になりました!!OKURAさんもアドバイスありがとうございます!!!



沢渡

リンク

2016/7/16(Sat) 21:23:51|NO.76213

ソースを見た感じ、OKURAさんの言うとおり、整数型と実数型がごっちゃになっているような印象を受けます。
今後何か予期しない計算結果になった場合は、型について意識すると良いと思います。



コウノトリ

リンク

2016/7/17(Sun) 20:07:18|NO.76225

整数型と実数型がごっちゃになっているのは、数式計算では実数型を用い、配列要素の要素数の初期値には整数型を用いているからです。



リンク

2016/7/17(Sun) 22:17:27|NO.76230

どういう値を求めようとしているのか、
型の未整理も含めてソースを見れば見るほど謎が出てきますがとりあえず。

randomizeは最初の1個だけでいい。
rnd(1)は0しかとらないので、0と1でif分岐さすならrnd(2)で。



沢渡

リンク

2016/7/17(Sun) 22:37:39|NO.76233

整数と実数がごっちゃになっているというのは、例えばこの部分です。

sin(((snum+tnum)*M_PI)/180)
sinは実数を引数とする関数なのですが、snumもtnumも整数なので、((snum+tnum)*M_PI)/180の答えは整数になってしまいます。これでは正確な計算結果は出ません。
ですから、

sin((double(snum+pnum)*M_PI)/180)
といった感じで、型変換を行ってやる必要があります。

詳しい事は「HSP3プログラミング・マニュアル」の「3.6 式」を参照すると良いでしょう。
ややこしいのなら、「答えが実数になってほしいのなら、式の中身は全部実数にしてやれ」で良いと思います。
たとえば、180も実数の180.0にしてしまう等。

sin((double(snum+pnum)*M_PI)/180.0)



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