メソッド(method) の定義

C++/CLI でメソッド(GCM 関数) を定義して呼び出します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. ソースプログラムです。
    ファイル名 説明
    GCM.cpp GCM メソッド
  2. C++ では Object Class に含まれる関数をメンバー関数と言いますが、Maneged Mode ではメソッドと呼ぶようです。
    ここでは些細な事にはこだわらず、メソッドと関数は同じようなものと思って下さい。
  3. gcm() 関数では、パラメータで渡された n と m の最大公約数(GCM)を求めて、関数値としてリターンしています。
    最大公約数(GCM)とは、二個の整数を割り切ることのできる最大の数です。
    最大公約数はユークリッドの互除法を使った次の手順で計算できます。
    1. data1 と data2 が等しいとき data1 が最大公約数です。
    2. data1 が data2 より大きいとき data1-=data2 を計算して 1. に戻ります。
    3. data2 が data1 より大きいとき data2-=data1 を計算して 1. に戻ります。
  4. main() では x と y に 32 と 24 を格納して gcm() 関数を呼び出します。
    gcm() 関数では、これを n と m で受け取って、ユークリッドの互除法を使って GCM を計算します。
    求めた GCM を関数値としてリターンします。
    gcm() 関数では n と m を直接演算していますが、引数の値が変わるときはあまり良い方法とは言えません。
    本来はローカル領域にコピーしてから演算する方がルールにかなっています。
  5. 今回は gcm() 関数でパラメータの値を変更しても main() 側には影響しないことを確認するために直接演算してみました。
    このように n と m の値を変更しても main() 側には影響しないことを確認して下さい。
    それでは変更した値は、どこに格納されているのでしょう。 (^_^;)
        int gcm(int n, int m)
        {
            while(n!=m)
            {   if (n>m)    n-= m;
                else        m-= n;
            }
            return n;
        }
        

超初心者のプログラム入門(C/C++)