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

C++で魔方陣の不足しているエントリを埋めます


最初は対角要素が空である3x3行列が1つあるとします。行、列、対角線の合計が同じになるように対角線を塗りつぶす必要があります。行列が-

のようなものであると仮定します
0 3 6
5 0 5
4 7 0

充填後は−

6 3 6
5 5 5
4 7 4

対角要素がx、y、zであると仮定します。値は-

になります
  • x =(M [2、3] + M [3、2])/ 2
  • z =(M [1、2] + M [2、1])/ 2
  • y =(x + z)/ 2

#include<iostream>
using namespace std;
void displayMatrix(int matrix[3][3]) {
   for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++)
         cout << matrix[i][j] << " ";
         cout << endl;
   }
}
void fillDiagonal(int matrix[3][3]) {
   matrix[0][0] = (matrix[1][2] + matrix[2][1]) / 2;
   matrix[2][2] = (matrix[0][1] + matrix[1][0]) / 2;
   matrix[1][1] = (matrix[0][0] + matrix[2][2]) / 2;
   cout << "Final Matrix" << endl;
   displayMatrix(matrix);
}
int main() {
   int matrix[3][3] = {{ 0, 7, 6 },
   { 9, 0, 1 },
   { 4, 3, 0 }};
   cout << "Given Matrix" << endl;
   displayMatrix(matrix);
   fillDiagonal(matrix);
}

出力

Given Matrix
0 7 6
9 0 1
4 3 0
Final Matrix
2 7 6
9 5 1
4 3 8

  1. 与えられた行列が魔方陣であるかどうかをC++で確認してください

    ここでは、行列が魔方陣であるかどうかに関係なく、魔方陣は正方行列であり、各行、各列、および各対角線の合計が同じであることがわかります。 行列が次のようなものであると仮定します- 6 1 8 7 5 3 2 9 4 これは魔方陣です。ご覧のとおり、各行、列、対角線の合計は15です。 行列が魔方陣であるかどうかを確認するには、主対角和と二次対角和が同じである場合は魔方陣であり、そうでない場合はそうではありません。 例 #include <iostream> #define N 3 using namespace std; b

  2. C++ブール行列

    ブール行列は、0と1の2つの要素のみを持つ行列です。このブール行列の質問では、サイズがmXnのブール行列arr[m][n]があります。そして、解く条件は、m [i] [j] =1の場合、m [i]=1およびm[j]=1です。これは、i番目の行とj番目の列のすべての要素が1になることを意味します。 例を見てみましょう Input: arr[2][2] = 1 0                   0 0 Output: arr[2][2] = 1 1       &nbs