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

同心の長方形パターンをC++の2次元マトリックスに印刷します


この問題では、長方形のパターンを2Dマトリックスで印刷する必要があります。 それらが互いに同心であるような方法で。

この問題をよりよく理解するために例を見てみましょう。

For n=4 is :
   4 4 4 4 4 4 4
   4 3 3 3 3 3 4
   4 3 2 2 2 3 4
   4 3 2 1 2 3 4
   4 3 2 2 2 3 4
   4 3 3 3 3 3 4
   4 4 4 4 4 4 4

ここでは、上記のようにnの整数値を使用してパターンを印刷し、同心の長方形を-

として印刷する必要があります。
n  n   n   n  n
n n-1 n-1 n-1 n
n n-1 n-2 n-1 n
n n-1 n-1 n-1 n
n  n   n   n  n

さて、この問題では、ご覧のとおり、(2n-1)があります。 合計で2Dマトリックスの列と行。この2Dマトリックスは、2つの部分で印刷されます。上の方は0から(2n-1)/ 2になります 下半分は((2n-1)/ 2 + 1)から2n-2になります 。

これで、各行の値が1ずつ減少し、数が行数、つまり1からi(行数)に達するまで続きます。次に、数を増やしてnに戻します。

このロジックを使用すると、問題を解決するためのプログラムを作成できます。

#include <bits/stdc++.h>
using namespace std;
void print2Dsequence(int n){
   int s = 2 * n - 1;
   for (int i = 0; i < (s / 2) + 1; i++) {
      int m = n;
      for (int j = 0; j < i; j++) {
         cout << m << " ";
         m--;
      }
      for (int k = 0; k < s - 2 * i; k++) {
         cout << n - i << " ";
      }
      m = n - i + 1;
      for (int l = 0; l < i; l++) {
         cout << m << " ";
         m++;
      }
      cout << endl;
   }
   for (int i = s / 2 - 1; i >= 0; i--) {
      int m = n;
      for (int j = 0; j < i; j++) {
         cout << m << " ";
         m--;
      }
      for (int k = 0; k < s - 2 * i; k++) {
         cout << n - i << " ";
      }
      m = n - i + 1;
      for (int l = 0; l < i; l++) {
         cout << m << " ";
         m++;
      }
      cout << endl;
   }
}
int main(){
   int n = 4;
   cout<<"The sequence of concurrent rectangle of 4 is : \n";
   print2Dsequence(n);
   return 0;
}

出力

4の同時長方形のシーケンスは-

です。
4 4 4 4 4 4 4
4 3 3 3 3 3 4
4 3 2 2 2 3 4
4 3 2 1 2 3 4
4 3 2 2 2 3 4
4 3 3 3 3 3 4
4 4 4 4 4 4 4

  1. Cプログラムで行列の対角パターンで数値を印刷します。

    タスクは、対角パターンのnxnの行列を印刷することです。 nが3の場合、対角パターンで行列を印刷するのは-です。 したがって、出力は次のようになります- 例 Input: 3 Output:    1 2 4    3 5 7    6 8 9 Input: 4 Output:    1 2 4  7    3 5 8 11    6 9 12 14    10 13 15 16 この問題は、数値nを与え、n x nの行列を生成

  2. 与えられた行列をC++で反時計回りのスパイラル形式で印刷します

    この問題では、2次元の行列が与えられます。そして、私たちのタスクは、から反時計回りのスパイラルで行列の要素を印刷することです。 反時計回りのスパイラルフォーム −これは、左上から始まり、反時計回りに最初の右下から左上に向かって進むスパイラルトラバーサルです。 反時計回りのトラバーサルは159 13 14 15 16 12 8 4 3 2 6 10117になります。 問題を理解するために例を見てみましょう Input:    2 4 6    1 7 9    5 0 3 Output: 2 1 5 0 3 9 7 この問