C++
 Computer >> コンピューター >  >> プログラミング >> C++

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<<"行列は乗算できません";

このように、行列の乗算可能性の判定は、たった一つの条件比較(列数と行数の一致)だけで簡単に行うことができます。実際の行列の要素を入力して掛け合わせる前に、このチェックを行うことで無効な演算を防ぐことができます。

  1. C++でべき等行列を判定するプログラムの作成方法

    行数を r、列数を c とする行列 M[r][c] が与えられ、r = c となる正方行列を考えます。この記事では、与えられた正方行列がべき等行列(アイデンポテント行列)であるかどうかを判定するC++プログラムを解説します。 べき等行列とは 行列 M がべき等行列であるとは、行列 M と自分自身の積が元の行列 M と等しくなること、すなわち M × M = M が成り立つことを指します。 例えば、次の行列を見てください。 この行列を自分自身で掛け合わせても、結果は元の行列とまったく同じになります。したがって、この行列はべき等行列であると言えます。 べき等行列の代表的な例としては、ベクトルを

  2. C++で対角行列・スカラー行列を判定するプログラムの書き方

    行列 M[r][c] が与えられたとき、「r」は行数、「c」は列数を表し、r = c のとき正方行列となります。本記事では、与えられた正方行列が対角行列であるか、スカラー行列であるかを判定し、該当する場合には「yes」を出力する方法を解説します。 対角行列とは 正方行列 m[][] が対角行列であるのは、主対角線以外の要素がすべてゼロである場合、かつその場合に限ります。 下図のように、赤色で示された要素が主対角成分(非ゼロ)であり、それ以外の要素はすべてゼロになっているため、この行列は対角行列です。 入出力例 Input: m[3][3] = { {7, 0, 0}, {0, 8, 0}