1つの変数を含む任意の一次方程式を解くC++プログラム
1つの変数を含む一次方程式とは
1つの変数を含む任意の一次方程式(線形方程式)は、次のような形式で表すことができます。
aX + b = cX + d
ここでの目的は、a、b、c、d の値が与えられたときに、変数 X の値を求めることです。
X の求め方
方程式を変形すると、X の値は次の公式で求められます。
aX − cX = d − b
X(a − c) = d − b
X = (d − b) / (a − c)
一次方程式を解くC++プログラム
以下に、1つの変数を含む一次方程式を解くC++プログラムを示します。
例
#include<iostream>
using namespace std;
int main() {
float a, b, c, d, X;
cout<<"The form of the linear equation in one variable is: aX + b = cX + d"<<endl;
cout<<"Enter the values of a, b, c, d : "<<endl;
cin>>a>>b>>c>>d;
cout<<"The equation is "<<a<<"X + "<<b<<" = "<<c<<"X + "<<d<<endl;
if(a==c && b==d)
cout<<"There are infinite solutions possible for this equation"<<endl;
else if(a==c)
cout<<"This is a wrong equation"<<endl;
else {
X = (d-b)/(a-c);
cout<<"The value of X = "<< X <<endl;
}
}
出力
上記のプログラムを実行すると、出力は以下のようになります。
The form of the linear equation in one variable is: aX + b = cX + d Enter the values of a, b, c, d : The equation is 5X + 3 = 4X + 9 The value of X = 6
プログラムの解説
このプログラムでは、まずユーザーから a、b、c、d の4つの値を入力し、入力された値を使って方程式を画面に表示しています。該当するコード部分は以下のとおりです。
cout<<"The form of the linear equation in one variable is: aX + b = cX + d"<<endl; cout<<"Enter the values of a, b, c, d : "<<endl; cin>>a>>b>>c>>d; cout<<"The equation is "<<a<<"X + "<<b<<" = "<<c<<"X + "<<d<<endl;
続いて、if 文による条件分岐で方程式の状態を判定します。
- a == c かつ b == d の場合: 方程式の両辺が完全に一致するため、解は無数に存在します。
- a == c の場合: 変数 X が消去されてしまい、方程式として成立しないため、「誤った方程式」として扱われます。
- 上記以外の場合: 公式 X = (d − b) / (a − c) に基づいて X の値を計算し、結果を出力します。
if(a==c && b==d)
cout<<"There are infinite solutions possible for this equation"<<endl;
else if(a==c)
cout<<"This is a wrong equation"<<endl;
else {
X = (d-b)/(a-c);
cout<<"The value of X = "<< X <<endl;
}
このように、条件分岐を適切に組み合わせることで、一次方程式の解の有無や一意性を正しく判定しながら、任意の1元一次方程式を解くプログラムを作成できます。
-
C++で部分的に埋められた数独グリッドを解くプログラム(バックトラッキング法)
ここでは、一部のマスのみが埋められた数独グリッドをC++で解く方法を解説します。数独とは9×9の数字グリッドであり、全体はさらに3×3のボックスに分割されています。数独を解くためには、以下のルールを守る必要があります。使用する数字は1から9までです。同じ行・同じ列・同じ3×3ボックス内に、同じ数字を重複して配置することはできません。バックトラッキングによる解法の考え方本記事ではバックトラッキング(バックトラック)アルゴリズムを使用して数独を解きます。空きマスに数字を仮に置いた後、その配置がルール上妥当かどうかを検証します。もし配置が不正であれば別の数字を試し、1〜9のすべての数字を試しても有効
-
DAG(有向非巡回グラフ)のランダム線形拡張を生成するC++プログラム
この記事では、有向非巡回グラフ(DAG: Directed Acyclic Graph)のランダム線形拡張(Random Linear Extension)を作成する方法を解説します。線形拡張とは、DAGの位相ソート(トポロジカルソート)に相当するものです。以下のようなグラフを例に考えてみましょう。トポロジカルソートとは有向非巡回グラフにおけるトポロジカルソートとは、頂点を線形に並べた順序のことです。有向グラフのすべての辺 u-v に対して、並び順の中で頂点 u が必ず頂点 v よりも先に現れるような順序を指します。始点の頂点は必ず終点の頂点よりも先に配置される必要があるため、処理済みの頂点を