スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【LimeChat2】計算マクロ Math.pl

ホームページリニューアルしました。
物置になりますw

その物置第一号が LimeChat2 で使える計算マクロ。
http://www5d.biglobe.ne.jp/~tea-f/Math2.txt

ちなみにperl言語で書いてます。

LimeChat2の最新VerではJScript使ってマクロ作れるんですよね。
だからそのうちこの計算マクロもJScriptに移行させますが。

一応習作で一番できが良かったので公開。
後はまぁオープンソースにするので、良いように改造されればとw
まぁ、そんな良い発想してるわけじゃないですがね。


続きから解説します。
my $fom = $ARGV[0];
この変数は入力が正しくきているかのチェックをするための変数です。
実際の変数は例えば

【12 + 12 =】の場合、ARGVは
ARGV[0] = "12"
ARGV[1] = "+"
ARGV[2] = "12"
ARGV[3] = "="

のように配列変数ARGVになっています。
数字や記号の間が半角スペースのとき、配列として入力されることになります。
もし、【12+12=】な場合だと
ARGV[0] = "12+12="
になるんです。

そうすると、この後のソースがやたら複雑になるのでユーザの入力の方で調整していただくことに。
だから半角スペースが必要なんです。PELの人ごめんね(´・ω・`)使いずらい理由はココに・・・。


$k = "k";
Math.plでは一応㌔単位に対応してます。(1k=1000)
そのための変数です。


$num = $#ARGV + 1;
$i = 0;

$#ARGV+1でこの後のループを調整。
でも、別にわざわざ+1しないでもよかったことに後で気づく。
一応このときは頭を悩ませたということでひとつ。(直せ



//単位"k"を数字に直す。
for($i = 0 ; $i < $num ; $i++){
$a = $ARGV[$i];
$find = index($a,"k");
if( $find >= 0){
$str = substr($a,0,$find);
$ARGV[$i] = $str * 1000;
}
$i++;
}


ここはいいよね。"k"が見つかったら"k"を取り除いて出てきた数字に*1000


//"+"、"-"、"*"、"/"を判別して計算
for($i = 1 ; $i < $num ; $i++){

if($ARGV[$i] eq "*"){
$eans = $ARGV[$i-1] * $ARGV[$i+1];
$ans = $eans;
$ARGV[$i+1] = $ans;
$ARGV[$i-1] = 0;
}


if($ARGV[$i] eq "/"){
$eans = $ARGV[$i-1] / $ARGV[$i+1];
$ans = $eans;
$ARGV[$i+1] = $ans;
$ARGV[$i-1] = 0;
}


if($ARGV[$i] eq "+"){
$eans = $ARGV[$i-1] + $ARGV[$i+1];
$ans = ans + $eans;
$ARGV[$i+1] = $ans;

}

if($ARGV[$i] eq "-"){
$eans = $ARGV[$i-1] - $ARGV[$i+1];
$ans = $ans + $eans;
$ARGV[$i+1] = $ans;
}

}


各記号の前と後ろの数字を計算する。



//IRCに出力
print "out=> $ans\n";





こんなマクロです。
よかったら使ってあげてください。

使い方はサイトの方であげていますゆえに!
スポンサーサイト

trackback


この記事にトラックバックする(FC2ブログユーザー)

-

管理人の承認後に表示されます

コメント

非公開コメント

ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。