daily pastebin goal
60%
SHARE
TWEET

Untitled

a guest Feb 13th, 2018 55 in 4 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. #include "copyright.h"
  3.  
  4. using namespace std;
  5.  
  6. const int MAX_MATRIX_SIZE=31;
  7.  
  8. class Matrix
  9. {
  10. private:
  11.     int n;
  12.     int p_a[MAX_MATRIX_SIZE][MAX_MATRIX_SIZE];
  13. public:
  14.     Matrix(int a[MAX_MATRIX_SIZE][MAX_MATRIX_SIZE],int cnt){
  15.         n=cnt;
  16.         for(int i=0;i<n;i++){
  17.             for(int j=0;j<n;j++){
  18.                 a[i][j]=p_a[i][j];
  19.             }
  20.         }
  21.     }
  22.     void init(int sizeMatrix){
  23.         n=sizeMatrix;
  24.         for(int i=0;i<n;i++){
  25.             for(int j=0;j<n;j++){
  26.                 p_a[i][j]=0;
  27.             }
  28.         }
  29.     }
  30.     int size(){
  31.         return n;
  32.     }
  33.     bool isEmpty(){
  34.         return (!n);
  35.     }
  36.     int* getElement(int i, int j){
  37.         return &p_a[i][j];
  38.     }
  39. };
  40.  
  41. Matrix readMatrix(int n){
  42.     int a[MAX_MATRIX_SIZE][MAX_MATRIX_SIZE];
  43.     int amount=0;
  44.     for(int i=0;i<n;i++){
  45.         for(int j=0;j<n;j++){
  46.             a[i][j]=amount;
  47.             amount++;
  48.         }
  49.     }
  50.     return Matrix(a,n);
  51. }
  52.  
  53. int bypassMatrix(Matrix &mat,int ans[]){
  54.     int i=0;
  55.     int j=0;
  56.     int cnt=0;
  57.     int* addres;
  58.     int n=mat.size();
  59.     addres=mat.getElement(i,j);
  60.     ans[cnt++]=*addres;
  61.     while(i!=0 || j!=n-1){
  62.         if(!((i+j)%2)){
  63.             i++;
  64.             j++;
  65.             addres=mat.getElement(i,j);
  66.             ans[cnt++]=*addres;
  67.             if(j==n-1){
  68.                 i--;
  69.                 addres=mat.getElement(i,j);
  70.                 ans[cnt++]=*addres;
  71.             }
  72.         }
  73.         else{
  74.             i--;
  75.             j--;
  76.             addres=mat.getElement(i,j);
  77.             ans[cnt++]=*addres;
  78.             if(i==0){
  79.                 j++;
  80.                 addres=mat.getElement(i,j);
  81.                 ans[cnt++]=*addres;
  82.             }
  83.         }
  84.     }
  85.     return cnt;
  86. }
  87.  
  88. void printArray(int a[],int cnt){
  89.     for(int i=1;i<=cnt;i++){
  90.         cout << a[i-1] << " ";
  91.         if(!(i%10) && cnt!=i) {
  92.             cout << endl;
  93.         }
  94.     }
  95.     cout << endl;
  96. }
  97.  
  98. int main()
  99. {
  100.     copyright();
  101.     int a[MAX_MATRIX_SIZE][MAX_MATRIX_SIZE];
  102.     cout << "By a square matrix print a sequence of its elements bypassing ";
  103.     cout << "the triangle over the maindiagonal of the matrix ""snake ";
  104.     cout << "from the upper right corner diagonals (parallel to the main diagonal)." << endl;
  105.     int n;
  106.     int ans[451];
  107.     cin >> n;
  108.     Matrix mat(a,n);
  109.     mat.init(n);
  110.     readMatrix(n);
  111.     cout << "***** Input" << endl;
  112.     cout << mat.size() << endl;
  113.     cout << "***** Output, 205" << endl;
  114.     if(mat.isEmpty()){
  115.         cout << "The matrix is empty" << endl;
  116.     }
  117.     else{
  118.         int cnt=bypassMatrix(mat,ans);
  119.         printArray(ans,cnt);
  120.     }
  121.     cout <<  "*****" << endl;
  122.     return 0;
  123. }
RAW Paste Data
Top