Partial Class

Partial(兄弟)Class を使って最大公約数(GCM)を計算します。

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

プログラムの説明

  1. C++ でも Partial(兄弟)Class が使えるようなので、これを使って最大公約数(GCM)を計算します。
    GCM, LCM の説明は GCM LCM を参照して下さい。
  2. VS 2019 を立ち上げて [Blank App(Universal Windows - C++/CX)] を構築して下さい。
    GcmClass.h, GcmClass.cpp を作成してプロジェクトに加えます。
  3. GcmClass.h のソースコードです。
    partial で class MainPage として gcm() 関数を定義します。
    partial で宣言された Class は一つにまとめられます。
    #pragma once 
    #include "pch.h"
    
    namespace App1
    {   partial ref class MainPage
        { public:
            int gcm(int v1, int v2);
        };
    }
    
  4. GcmClass.cpp のソースコードです。
    MainPage.xaml.h と GcmClass.h を #include して下さい。
    gcm(int v1, int v2) 関数で v1 と v2 の最大公約数(GCM)を計算します。
    #include "pch.h"
    #include "MainPage.xaml.h"
    #include "GcmClass.h"
    
    namespace App1
    {
        int MainPage::gcm(int v1, int v2)
        {   int w1 = v1;
            int w2 = v2;
            while(w1 != w2)
            {   if (w1 > w2)    w1-= w2;
                else            w2-= w1;
            }
            return w1;
        }
    }
    
  5. MainPage.xaml.h を修正して下さい。
    #pragma once
    
    #include "MainPage.g.h"
    #include "GcmClass.h"
    
    namespace App1
    {
        public ref class MainPage sealed
        {
        public:
            MainPage();
        };
    }
    
  6. MainPage.xaml.cpp の抜粋です。
    簡単なプログラムになるように Constructor から OutputDebugString() で印字してみました。
    MainPage::MainPage()
    {
        int ans;
        InitializeComponent();
        ans = gcm(24, 32);
        OutputDebugString(L"★GCM(24,32)\n");
        OutputDebugString(ans.ToString()->Data());
    }
    
  7. プログラムを実行すると 24 と 32 の最大公約数(8)が印字されます。
    Lcm Class でクラスを継承した最小公倍数のプログラムを掲載しています。
    C# の Partial Class は Calender を参照して下さい。

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