2019年5月30日木曜日

雑記_take2

<<追記20190530
昨日はオブジェクト指向の話を考えたがまだ早いと思った。
しばらくプログラムの事を書かなければいけないと思った。
とりあえず今日は関数と繰り返し文とif文と再起関数にチャレンジしようと思う。

絶対値を求める関数を書くとりあえずintで読み取ってintで返す関数を書く

int abs_func(int value) {
 if(value <0) {
       return value*-1;
 } else {
       return value;
 }
}

関数の使い方はこうである。
int i = -55;
i = abs_func(i);
とか
int i = abs_func(-55);

基本的に関数は宣言出来る変数は何でも指定して返せる。
関数の頭にある宣言名でreturnで返せば関数は終了する。
valueがマイナスならvalueに-1かけて戻り値にする。
そうでなければそのままvalueを戻り値にする。

階乗の関数を書いてみると絶対値の関数も使って

int factorial_func(int value, int UpperLimit) {
value = abs_func(value);//絶対値で階乗計算
int answer=1;
    while(value > 0) {
     if (answer > (UpperLimit/value)) {
          return -1;//オーバーフローでエラー
     }
     answer=answer*vlaue;
     value--;
    }
    return answer;
}

これをfor文で書くと

int factorial_func(int value, int UpperLimit) {
value = abs_func(value);//絶対値で階乗計算
int answer=1;
    for(int i = value;i >0;i--)
     if (answer > (UpperLimit/i)) {
          return -1;//オーバーフローでエラー
     }
     answer=answer*i;
    }
    return answer;
}

使い方は
int a = factorial_func(10,2147483647);
繰り返し文で
1*10*9*8*7*6*5*4*3*2*1のような計算をする。

今日はこの辺にしとく
今日の小言は再帰関数にする。
明日はまた作戦を練りたい。
明日もよろしく。
<<追記20190530end

0 件のコメント:

コメントを投稿