2つの行列を追加するために加算演算子をオーバーロードするC++プログラム
2つの行列mat1とmat2があるとします。これらの2つの行列を追加して、3番目の行列を作成する必要があります。加算演算子をオーバーロードしてこれを行う必要があります。
したがって、入力が次のような場合
5 | 8 |
9 | 6 |
7 | 9 |
8 | 3 |
4 | 7 |
6 | 3 |
その場合、出力は次のようになります
13 | 11 |
13 | 13 |
13 | 12 |
これを解決するには、次の手順に従います-
-
加算演算子をオーバーロードします。これにより、2番目の引数として別の行列マットが使用されます
-
1つの空白の2次元配列vvを定義する
-
1つの2D配列vvを定義し、それに現在の行列要素をロードします
-
初期化i:=0の場合、i
-
初期化j:=0の場合、j
- vv [i、j]:=vv [i、j] + mat.a [i、j]
-
- vvを使用して新しい行列を返す
理解を深めるために、次の実装を見てみましょう-
例
#include <iostream> #include <vector> using namespace std; class Matrix { public: Matrix() {} Matrix(const Matrix& x) : a(x.a) {} Matrix(const vector<vector<int>>& v) : a(v) {} Matrix operator+(const Matrix&); vector<vector<int>> a; void display(){ for(int i = 0; i<a.size(); i++){ for(int j = 0; j<a[i].size(); j++){ cout << a[i][j] << " "; } cout << endl; } } }; Matrix Matrix::operator+(const Matrix& m){ vector<vector<int>> vv = a; for (int i=0; i<vv.size(); i++){ for (int j=0; j<vv[0].size(); j++){ vv[i][j] += m.a[i][j]; } } return Matrix(vv); } int main(){ vector<vector<int>> mat1 = {{5,8},{9,6},{7,9}}; vector<vector<int>> mat2 = {{8,3},{4,7},{6,3}}; int r = mat1.size(); int c = mat1[0].size(); Matrix m1(mat1), m2(mat2), res; res = m1 + m2; res.display(); }
入力
{{5,8},{9,6},{7,9}}, {{8,3},{4,7},{6,3}}
出力
13 11 13 13 13 12
-
C++で2つのバイナリ文字列を追加するプログラム
2進数の文字列が2つある場合、それら2つの2進数文字列を加算して得られた結果を見つけ、その結果を2進数文字列として返す必要があります。 2進数は、0または1のいずれかで表される数値です。2つの2進数を加算する際には、2進数の加算規則があります。 0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0, carry 1 入力 str1 = {“11”}, str2 = {“1”} 出力 “100” 入力 str1 = {“110”},
-
C++でべき等行列をチェックするプログラム
行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列がべき等行列であるかどうかを確認する必要があります かどうか。 べき等行列 行列「M」はべき等行列と呼ばれます 行列「M」にそれ自体を掛けたものだけが同じ行列「M」を返す場合、つまり M * M=M。 以下の例のように- 上記の行列はそれ自体で乗算され、同じ行列を返すと言えます。したがって、マトリックスはIデポテンツマトリックスです。 。 例 Input: m[3][3] = { {2, -2, -4}, {-1, 3,