C++で2つの行列の乗算可能性を判定するプログラム
2つの行列が「乗算可能(multiplicable)」であるとは、それらを掛け合わせることができることを意味します。行列の乗算が成立するのは、1つ目の行列の列数が、2つ目の行列の行数と一致する場合のみです。
乗算可能性の条件
例を挙げて確認してみましょう。
行列1の行数 = 3 行列1の列数 = 2 行列2の行数 = 2 行列2の列数 = 5
この場合、行列1の列数(2)と行列2の行数(2)が一致しているため、行列1と行列2は乗算可能です。
乗算可能性をチェックするC++プログラム
以下に、2つの行列が乗算可能かどうかを判定するC++プログラムを示します。
#include<iostream>
using namespace std;
int main() {
int row1, column1, row2, column2;
cout<<"1つ目の行列のサイズを入力してください:"<< endl;
cin>>row1;
cin>>column1;
cout<<"2つ目の行列のサイズを入力してください:"<<endl;
cin>>row2;
cin>>column2;
cout<<"1つ目の行列"<<endl;
cout<<"行数:"<<row1<<endl;
cout<<"列数:"<<column1<<endl;
cout<<"2つ目の行列"<<endl;
cout<<"行数:"<<row2<<endl;
cout<<"列数:"<<column2<<endl;
if(column1 == row2)
cout<<"行列は乗算可能です";
else
cout<<"行列は乗算できません";
return 0;
}実行結果
1つ目の行列のサイズを入力してください:2 3 2つ目の行列のサイズを入力してください:3 3 1つ目の行列 行数:2 列数:3 2つ目の行列 行数:3 列数:3 行列は乗算可能です
プログラムの解説
このプログラムでは、まずユーザーから2つの行列のサイズ(行数と列数)を入力してもらいます。該当するコード部分は以下の通りです。
cout<<"1つ目の行列のサイズを入力してください:"<< endl; cin>>row1; cin>>column1; cout<<"2つ目の行列のサイズを入力してください:"<<endl; cin>>row2; cin>>column2;
次に、入力された各行列の行数と列数を出力して表示します。
cout<<"1つ目の行列"<<endl; cout<<"行数:"<<row1<<endl; cout<<"列数:"<<column1<<endl; cout<<"2つ目の行列"<<endl; cout<<"行数:"<<row2<<endl; cout<<"列数:"<<column2<<endl;
最後に、if文を使って条件判定を行います。1つ目の行列の列数(column1)が2つ目の行列の行数(row2)と等しければ「行列は乗算可能です」と出力し、そうでなければ「行列は乗算できません」と出力します。
if(column1 == row2) cout<<"行列は乗算可能です"; else cout<<"行列は乗算できません";
このように、行列の乗算可能性の判定は、たった一つの条件比較(列数と行数の一致)だけで簡単に行うことができます。実際の行列の要素を入力して掛け合わせる前に、このチェックを行うことで無効な演算を防ぐことができます。
-
C++でべき等行列を判定するプログラムの作成方法
行数を r、列数を c とする行列 M[r][c] が与えられ、r = c となる正方行列を考えます。この記事では、与えられた正方行列がべき等行列(アイデンポテント行列)であるかどうかを判定するC++プログラムを解説します。 べき等行列とは 行列 M がべき等行列であるとは、行列 M と自分自身の積が元の行列 M と等しくなること、すなわち M × M = M が成り立つことを指します。 例えば、次の行列を見てください。 この行列を自分自身で掛け合わせても、結果は元の行列とまったく同じになります。したがって、この行列はべき等行列であると言えます。 べき等行列の代表的な例としては、ベクトルを
-
C++で対角行列・スカラー行列を判定するプログラムの書き方
行列 M[r][c] が与えられたとき、「r」は行数、「c」は列数を表し、r = c のとき正方行列となります。本記事では、与えられた正方行列が対角行列であるか、スカラー行列であるかを判定し、該当する場合には「yes」を出力する方法を解説します。 対角行列とは 正方行列 m[][] が対角行列であるのは、主対角線以外の要素がすべてゼロである場合、かつその場合に限ります。 下図のように、赤色で示された要素が主対角成分(非ゼロ)であり、それ以外の要素はすべてゼロになっているため、この行列は対角行列です。 入出力例 Input: m[3][3] = { {7, 0, 0}, {0, 8, 0}