C++で分数を最簡形に約分する方法
2つの整数 Num1 と Num2 が入力として与えられます。これらの整数は分数 Num1/Num2 として表すことができます。ここでの目標は、この分数を最簡形(これ以上約分できない形)にすることです。
GCD(最大公約数)を使って約分する
まず、2つの数値の最大公約数(GCD)を計算します。
次に、そのGCDで両方の数値を割ります。
割り算の結果得られた商を、それぞれの変数に代入します。
こうして得られる Num1/Num2 が最簡形の分数になります。
実行例
入力 − Num1=22、Num2=10
出力 − Num1 = 11、Num2 = 5
最簡形の分数:11/5
解説 − 22と10のGCDは2です。
22÷2=11、10÷2=5
よって、最簡形の分数は 11/5 となります。
入力 − Num1=36、Num2=40
出力 − Num1 = 9、Num2 = 10
最簡形の分数:9/10
解説 − 36と40のGCDは4です。
36÷4=9、40÷4=10
よって、最簡形の分数は 9/10 となります。
プログラムのアプローチ
このアプローチでは、再帰処理を用いて入力された2つの数値のGCDを最初に計算します。その後、両方の数値をGCDで割って商を求めます。この商こそが、最簡形の分数を構成する値となります。
入力変数 Num1 と Num2 を受け取ります。
関数 findGCD(int a, int b) は num1 と num2 を引数に取り、両者のGCDを返します。
b が0の場合は a を返し、そうでなければ findGCD(b, a % b) を返します(ユークリッドの互除法)。
関数 lowestFraction(int num1, int num2) は2つの数値を引数に取り、最簡形の分数を出力します。
GCDを格納するための変数 denom を用意します。
num1 = num1 / denom、num2 = num2 / denom として各変数を更新します。
num1 と num2 を出力します。
最後に、最簡形の分数を num1/num2 の形式で出力します。
サンプルコード
#include <bits/stdc++.h>
using namespace std;
int findGCD(int a, int b) {
if (b == 0)
return a;
return findGCD(b, a % b);
}
void lowestFraction(int num1, int num2){
int denom;
denom = findGCD(num1,num2);
num1/=denom;
num2/=denom;
cout<< "Num1 = " << num1<<endl;
cout<< "Num2 = " << num2<<endl;
cout<< "Lowest Fraction : "<<num1<<"/"<<num2;
}
int main(){
int Num1 = 14;
int Num2 = 8;
lowestFraction(Num1,Num2);
return 0;
}
出力結果
上記のコードを実行すると、以下のような出力が得られます。
Num1 = 7 Num2 = 4 Lowest Fraction : 7/4
-
C++で解く迷路問題:転がるボールが目的地に止まれるかをBFSで判定する方法
迷路の中にボールがあるとします。迷路には空きスペース(通路)と壁があります。ボールは上下左右のいずれかの方向に転がって空き通路を進むことができますが、壁にぶつかるまで止まりません。ボールが停止したときに、次の方向を選べます。この問題では、ボールの開始位置、目的地、そして迷路そのものが与えられ、「ボールが目的地の位置で停止できるかどうか」を判定する必要があります。迷路は2次元配列で表現され、1は壁、0は空きスペースを意味します。迷路の外周はすべて壁になっています。開始位置と目的地は行・列のインデックス(座標)で与えられます。問題例たとえば、次のような2次元配列で表される迷路を考えてみましょう。0
-
Windowsで使えるC++開発向けおすすめIDE 7選
```html 大規模なプロジェクトをプレーンなテキストエディターだけで管理するのは困難です。こうしたケースではIDE(統合開発環境)を使った方が、生産性が向上しストレスも大幅に軽減されます。IDEにはさまざまな種類があり、自分のニーズに合ったものを選ぶことが重要です。ここでは、Windowsで利用できる優れたC/C++向けIDEをご紹介します。 1. Visual Studio Microsoftが開発した定番IDEです。Windows上でのC++プログラムの構築・開発・プロファイリングにおいて、最高クラスのツール群を備えています。豊富なプラグインストアも魅力で、Azure、PowerShe