VC 2019 Lcm Class

class GcmClass を継承して class LcmClass を作成します。

前田稔の超初心者のプログラム入門

Gcm Class

  1. 最小公倍数(LCM)を計算するには最大公約数(GCM)を先に求めなければなりません。
    そこで、先に最大公約数(GCM)を求めるクラスを作成します。
    GCM, LCM の説明は GCM LCM を参照して下さい。
  2. GcmClass.h のソースコードです。
    gcm(int v1, int v2); が v1 と v2 の最大公約数を求めるメソッドです。
    // Gcm class  Header File
    namespace App1
    {   ref class GcmClass
        {
          public:
            int gcm(int v1, int v2);
        };
    }
    
  3. GcmClass.cpp のソースコードです。
    "pch.h" をインクルードしなければなりません。
    // Gcm class  Program File
    #include "pch.h"
    #include "GcmClass.h"
    
    namespace App1
    {
        int GcmClass::gcm(int v1, int v2)
        {   int w1 = v1;
            int w2 = v2;
            while(w1 != w2)
            {   if (w1 > w2)    w1-= w2;
                else            w2-= w1;
            }
            return w1;
        }
    }
    
  4. LcmClass.h のソースコードです。
    最小公倍数の計算には最大公約数が必要なので、GcmClass を継承します。
    クラスを継承すると、継承したクラスに含まれる領域や関数を直接利用することが出来ます。
    lcm(int v1, int v2); が v1 と v2 の最小公倍数を求めるメソッドです。
    // Lcm class  Header File
    #include "GcmClass.h"
    namespace App1
    {   ref class LcmClass : public GcmClass
        {
        public:
            int     lcm(int v1, int v2);
        };
    }
    
  5. LcmClass.cpp のソースコードです。
    lcm() 関数の中から gcm(v1,v2); 関数を呼び出していることに注目して下さい。
    // Lcm class  Program File
    #include "pch.h"
    #include "LcmClass.h"
    namespace App1
    {
        int LcmClass::lcm(int v1, int v2)
        {
            return v1*v2/gcm(v1,v2);
        }
    }
    
  6. MainPage.xaml.h の抜粋です。
    LcmClass^ は private: で宣言して下さい。
        private:
            LcmClass^ Lcm;
    
  7. MainPage.xaml.cpp の抜粋です。
    簡単なプログラムになるように Constructor から OutputDebugString() で印字してみました。
    #include <windows.h>
    
    MainPage::MainPage()
    {
        int  wk;
        Lcm = ref new LcmClass();
        wk = Lcm->lcm(24, 32);
        OutputDebugString(wk.ToString()->Data());
        OutputDebugString(L"\nLCM(24,32): 96\n");
    }
    
  8. GcmClass.h と GcmClass.cpp と LcmClass.h と LcmClass.cpp をプロジェクトに組み込んで下さい。
    プログラムを実行すると 24 と 32 の最小公倍数(96)が印字されます。

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