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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0409
らーめんifについておしえて7解決


らーめん

リンク

2010/4/9(Fri) 17:19:55|NO.31869

もし、a(0)とa(1)とa(2)が0じゃなかったらというのがしたいんですが、

dim a,3 if a(0)!0&a(1)!0&a(2)!0 : mes 0
今こうなってるんですが、これをもっと縮めるにはどうしたらいいですか?
数が多いのもあるので&で繋げるのが大変です。
おしえてください。お願いします。



この記事に返信する


backdrop

リンク

2010/4/9(Fri) 18:05:36|NO.31870

普通に考えればこんな感じでできます
他の言語じゃこういう考え方はあまりしません

if ( a(0) and a(1) and a(2) ) != 0 )



レノス

リンク

2010/4/9(Fri) 19:41:39|NO.31873

手っ取り早いのは、「マクロ」を使うという手です。
#define を調べてみてください。

また、「数が多い」というのが、
「多くの要素を持つ配列変数の、要素が全部 0 かどうかを調べたい」
という話なら、repeat で1つ1つ 0 かどうか調べて、どれかが 0 以外なら「失敗」、
それ以外なら「成功」、という風にした方が楽になります。

> backdrop さん
嘘は嘘と(ry



u

リンク

2010/4/9(Fri) 20:26:35|NO.31878

配列は基本repeat命令+cnt変数で処理するのが良いですよ。
一つでも相当したらフラグ用変数を立てる等・・。

dim a,10 a=0,0,1,0,3,0,0,2,0,0 repeat length(a) if a(cnt)!=0{ mes ""+cnt+"番目の配列は0ではありません→"+a(cnt) }else{ mes ""+cnt+"番目の配列は0です→"+a(cnt) flg=1//0があったフラグ } loop if flg:mes "配列に0が含まれています"



木村

リンク

2010/4/9(Fri) 20:39:24|NO.31879

 aが実数ならこんな手があります

if a.0*a.1*a.2 : else : mes "0"

>>補足
 このやり方は『0には何を掛けても0』、『0以外のどんな数を掛け合わせても0にならない』
という慣例を利用しています。(証明はできません。ごめんなさい)
 a.xとは変数aのx番目の要素という意味で『a.0』=『a(0)』です。
 そしてif命令は、引数が数値である時に『if x』⇒『if x!0』と補う謎仕様があります。
(余談ですが『stick key : if key&128 : end』のようなstick〜if &構文はこの謎仕様を
利用しています)
 つまり、上記の式は

if a.0*a.1*a.2 : else : mes "0" //⇒ if a.0*a.1*a.2!0 : else : mes "0" //⇒ if a(0)*a(1)*a(2)!0 : else : mes "0"
 と、いう意味になります。尚、aが虚数を含む場合は上記の方法は成立しませんので注意して
ください。



hatter

リンク

2010/4/9(Fri) 20:54:45|NO.31882

>『if x』⇒『if x!0』と補う謎仕様があります。
特に謎な仕様でもなく基本的にほとんどのプログラミング言語でそうです。
0を偽としそれ以外を真とします。それで条件節が真の時にその後を実行するようになってます。
実際比較演算子も計算結果は0と1を返しています。&や|は論理演算の計算ですのね若干ちがいます。

mes 3=3 ;代入演算子ではなく比較演算子の= mes 3=4 mes 3<4 mes 3<3 mes 3&3 mes 3&$




らーめん

リンク

2010/4/10(Sat) 08:13:58|NO.31886

#defineを調べたんですが、難しいことばかり書いててよくわかりませんでした
もうちょっと上達してからもう一度調べてみます
uさんのスクリプト見てわかりました。
解決です。もっと勉強します。
みなさんありがとうございました



backdrop

リンク

2010/4/12(Mon) 20:29:00|NO.31955

>#defineを調べたんですが、難しいことばかり書いててよくわかりませんでした
早い話が変数を特定の名前に割り当てるっていう、それだけのことです
計算するなら普通は#constを使う



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