数学、無料のオンライン学習塾

主に数学と数学に関するプログラミングを扱っています。小学生~大学入試までの算数と数学の問題と詳しい解説をしていきます。

javascriptで分数の掛け算割り算処理関数を作っておく

今回はそのうち他の関数を作る時に役立つであろう分数の掛け算割り算が処理できる関数をjavascriptで作っておきます。方針としては-の数を数えて符号の決定をして自前で作った約分の処理関数を使ってやっていきたいと思います。掛け算の場合は引数に1、割り算の場合は引数に2を指定することにします。


目次を開く


関数名と引数を決める

関数名はbunsu_kakewari

\[ \frac{b}{a}×(÷)\frac{d}{c} \]

引数は上記のa,b,c,dに加えて第五引数に1か2を指定して掛け算か割り算のどちらかを決定します。

1は掛け算、2は割り算にします。

function bunsu_kakewari(a,b,c,d,h){
//処理内容
}

-の数を数える

a,b,c,dに-がついてたらカウントを一つずつ増やすプログラムを記述しておきます。

その数が偶数なら計算結果の符号は+、奇数なら-です。

var count=0;
     if(a<0){
         count++;
        }
     if(b<0){
         count++;
      }
      if(c<0){
         count++;
      }
       if(d<0){
         count++;
      }

    //もしcountが偶数なら符号は+
     if(count%2==0){
         var hugou='+';
     }

   //そうでないなら符号は-
      else{
        var hugou='-';
     }


一度全部+にする

絶対値の暗号Math.abs(数値);を使って一度全部+にします。

a=Math.abs(a);
b=Math.abs(b);
c=Math.abs(c);
d=Math.abs(d);

それぞれ掛け算割り算をする

\[ \frac{b}{a}×(÷)\frac{d}{c} \]

なので

掛け算の場合は分母は

\[ a×c \]

分子は

\[ b×d \]

割り算の場合は分母は

\[ a×d \]

分子は

\[ b×c \]

ですね



//もし掛け算なら
if(h==1){
//分母
var bunbo=a*c;
//分子
var bunsi=b*d;
}

//もし割り算なら
if(h==1){
var bunbo=a*d;
var bunsi=b*c;
}

自前の約分できる関数を使って約分

自前で作ってある約分ができる関数を使って約分をします。

purechan22.hatenablog.com

これを使って分母、分子の約分をします

この関数の使い方は

var kekka=bunsu_yakubun(6,10);

などと入力することでkekkaに配列として分母、分子の順で配列として返ってきます。


var kekka=bunsu_yakubun(bunbo,bunsi);

関数全体をまとめて書く

function bunsu_kakewari(a,b,c,d,h){

      var count=0;

     if(a<0){
         count++;
        }
     if(b<0){
         count++;
      }
      if(c<0){
         count++;
      }
       if(d<0){
         count++;
      }

    //もしcountが偶数なら符号は+
     if(count%2==0){
         var hugou='+';
     }

   //そうでないなら符号は-
      else{
        var hugou='-';
     }

    //一度全部+にする
      a=Math.abs(a);
      b=Math.abs(b);
      c=Math.abs(c);
      d=Math.abs(d);

    //もし掛け算なら
     if(h==1){
    //分母
       var bunbo=a*c;
      //分子
        var bunsi=b*d;
       }

      //もし割り算なら
     if(h==1){
       var bunbo=a*d;
       var bunsi=b*c;
      }
   //自前の関数bunsu_yakubunで約分
       var kekka=bunsu_yakubun(bunbo,bunsi);

   //符号などをつけて返り値とする
      //他の関数で使えるように簡潔な形で返す
       return[hugou,kekka[0],kekka[1]];
}

関数の説明

この関数は-を含む分数の割り算、掛け算をする関数です。

\[ \frac{b}{a}×(÷)\frac{d}{c} \]

掛け算の場合は第5引数に1、割り算の場合は第5引数に2を入力します。

var bunsu=bunsu_kakewari(3,8,7,-3,1);

などと入力すると

符号、分母、分子の順に配列として次のように値が返ってきます。

-,7,8

実際の使い方

var bunsu=bunsu_kakewari(3,8,7,-3,1);
alert(bunsu[0]+bunsu[2]+"/"+bunsu[1]);

などと入力することで

-8/7

と計算結果が表示されます。


みんなが計算できるようにしておく

\[ \frac{b}{a}×(÷)\frac{d}{c} \] aの値を入力して下さい。
bの値を入力して下さい。
cの値を入力して下さい。
dの値を入力して下さい。
×の場合は1 ÷の場合は2を入力して下さい。