Advertisement
rado_dimitrov66

Number Matrix Operations

Mar 6th, 2024
601
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.70 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const unsigned short SIZE = 5;
  6.  
  7.  
  8. void startInit(int matrix[][SIZE])
  9. {
  10.     for (int i = 0; i < SIZE; i++) {
  11.  
  12.         for (int j = 0; j < SIZE; j++) {
  13.  
  14.             matrix[i][j] = SIZE - i;
  15.         }
  16.     }
  17. }
  18.  
  19. void printArray(int matrix[][SIZE]) {
  20.  
  21.     for (int i = 0; i < SIZE; i++) {
  22.  
  23.         for (int j = 0; j < SIZE; j++) {
  24.  
  25.             cout << matrix[i][j] << " ";
  26.         }
  27.  
  28.         cout << endl;
  29.     }
  30.  
  31. }
  32.  
  33. void arrayCopyMatrix(const int matrix[][SIZE], int copyArr[][SIZE]) {
  34.  
  35.     for (int i = 0; i < SIZE; i++) {
  36.  
  37.         for (int j = 0; j < SIZE; j++) {
  38.  
  39.             copyArr[i][j] = matrix[i][j];
  40.         }
  41.     }
  42. }
  43.  
  44. void makeZeroUnderGeneralDiagonal(int matrix[][SIZE]) {
  45.  
  46.  
  47.     unsigned short choose = -1;
  48.  
  49.  
  50.     int copyArr[SIZE][SIZE];
  51.  
  52.     do
  53.     {
  54.  
  55.         cout << "Choose action:\n[1] Change main matrix\n[2] Make copy on main matrix\n[0] Return to general menu\n:";
  56.         cin >> choose;
  57.  
  58.         switch (choose)
  59.         {
  60.         case 1:
  61.  
  62.  
  63.             for (int i = 1; i < SIZE; i++) {
  64.  
  65.                 for (int j = 0; j < i; j++) {
  66.  
  67.                     matrix[i][j] = 0;
  68.                 }
  69.             }
  70.  
  71.             printArray(matrix);
  72.  
  73.             choose = -1;
  74.  
  75.             break;
  76.  
  77.         case 2:
  78.  
  79.             arrayCopyMatrix(matrix, copyArr);
  80.  
  81.  
  82.  
  83.             for (int i = 1; i < SIZE; i++) {
  84.  
  85.                 for (int j = 0; j < i; j++) {
  86.  
  87.                     copyArr[i][j] = 0;
  88.                 }
  89.             }
  90.  
  91.             printArray(copyArr);
  92.  
  93.             choose = -1;
  94.  
  95.             break;
  96.  
  97.         default:
  98.  
  99.             break;
  100.         }
  101.  
  102.     } while (choose < 0 || choose > 2);
  103.  
  104.  
  105.  
  106. }
  107.  
  108.  
  109. void makeCircle(int matrix[][SIZE]) {
  110.  
  111.     unsigned short choose = -1;
  112.  
  113.  
  114.     int copyArr[SIZE][SIZE];
  115.  
  116.     const unsigned short centralIndex = SIZE / 2;
  117.  
  118.  
  119.     do
  120.     {
  121.  
  122.         cout << "Choose action:\n[1] Change main matrix\n[2] Make copy on main matrix\n[0] Return to general menu\n:";
  123.         cin >> choose;
  124.  
  125.         switch (choose)
  126.         {
  127.         case 1:
  128.  
  129.  
  130.             for (int i = 0; i < centralIndex; i++)
  131.             {
  132.  
  133.                 for (int j = i; j < SIZE - i; j++) {
  134.  
  135.                     for (int g = i; g < SIZE - i; g++) {
  136.                         matrix[j][g] = SIZE - i;
  137.                     }
  138.                 }
  139.             }
  140.  
  141.             matrix[centralIndex][centralIndex] = centralIndex + 1;
  142.  
  143.  
  144.             printArray(matrix);
  145.  
  146.             choose = -1;
  147.  
  148.             break;
  149.  
  150.         case 2:
  151.  
  152.             arrayCopyMatrix(matrix, copyArr);
  153.  
  154.             for (int i = 0; i < centralIndex; i++)
  155.             {
  156.  
  157.                 for (int j = i; j < SIZE - i; j++) {
  158.  
  159.                     for (int g = i; g < SIZE - i; g++) {
  160.                         copyArr[j][g] = SIZE - i;
  161.                     }
  162.                 }
  163.             }
  164.  
  165.             copyArr[centralIndex][centralIndex] = centralIndex + 1;
  166.  
  167.  
  168.             printArray(copyArr);
  169.  
  170.             choose = -1;
  171.  
  172.             break;
  173.  
  174.  
  175.         default:
  176.  
  177.             break;
  178.         }
  179.  
  180.     } while (choose < 0 || choose > 2);
  181. }
  182.  
  183. void makeNullDiagonalAndSort(int matrix[][SIZE]) {
  184.     unsigned short choose = -1;
  185.  
  186.  
  187.     int copyArr[SIZE][SIZE];
  188.  
  189.  
  190.     unsigned short counter = 0;
  191.     unsigned short number = 1;
  192.     do
  193.     {
  194.  
  195.         cout << "Choose action:\n[1] Change main matrix\n[2] Make copy on main matrix\n[0] Return to general menu\n:";
  196.         cin >> choose;
  197.  
  198.         switch (choose)
  199.         {
  200.         case 1:
  201.  
  202.  
  203.  
  204.             for (int i = 0; i < SIZE; i++) {
  205.  
  206.                 matrix[i][counter] = 0;
  207.  
  208.                 for (int j = counter + 1; j < SIZE; j++) {
  209.                     matrix[j][counter] = number;
  210.  
  211.                     number++;
  212.                 }
  213.  
  214.                 counter++;
  215.             }
  216.  
  217.             for (int i = counter - 1; i > 0; i--) {
  218.  
  219.  
  220.                 for (int j = counter - 2; j >= 0; j--) {
  221.                     matrix[j][counter - 1] = number;
  222.  
  223.                     number++;
  224.                 }
  225.  
  226.                 counter--;
  227.             }
  228.  
  229.             printArray(matrix);
  230.  
  231.             choose = -1;
  232.  
  233.             counter = 0;
  234.  
  235.             number = 1;
  236.  
  237.             break;
  238.  
  239.         case 2:
  240.  
  241.             arrayCopyMatrix(matrix, copyArr);
  242.  
  243.             for (int i = 0; i < SIZE; i++) {
  244.  
  245.                 copyArr[i][counter] = 0;
  246.  
  247.                 for (int j = counter + 1; j < SIZE; j++) {
  248.                     copyArr[j][counter] = number;
  249.  
  250.                     number++;
  251.                 }
  252.  
  253.                 counter++;
  254.             }
  255.  
  256.             for (int i = counter - 1; i > 0; i--) {
  257.  
  258.  
  259.                 for (int j = counter - 2; j >= 0; j--) {
  260.                     copyArr[j][counter - 1] = number;
  261.  
  262.                     number++;
  263.                 }
  264.  
  265.                 counter--;
  266.             }
  267.  
  268.             printArray(copyArr);
  269.  
  270.             choose = -1;
  271.  
  272.             counter = 0;
  273.  
  274.             number = 1;
  275.  
  276.             break;
  277.  
  278.  
  279.         default:
  280.  
  281.             break;
  282.         }
  283.  
  284.     } while (choose < 0 || choose > 2);
  285. }
  286.  
  287. void makeSpiralOfNumber(int matrix[][SIZE]) {
  288.  
  289.     unsigned short choose = -1;
  290.  
  291.  
  292.     int copyArr[SIZE][SIZE];
  293.  
  294.  
  295.     unsigned short counter = 0;
  296.     unsigned short number = 1;
  297.     do
  298.     {
  299.  
  300.         cout << "Choose action:\n[1] Change main matrix\n[2] Make copy on main matrix\n[0] Return to general menu\n:";
  301.         cin >> choose;
  302.  
  303.         switch (choose)
  304.         {
  305.         case 1:
  306.  
  307.             matrix[0][0] = 1;
  308.  
  309.             for(int i = 1; i < SIZE * SIZE; i++)
  310.  
  311.             printArray(matrix);
  312.  
  313.             choose = -1;
  314.  
  315.             counter = 0;
  316.  
  317.             number = 1;
  318.  
  319.             break;
  320.  
  321.         case 2:
  322.  
  323.             arrayCopyMatrix(matrix, copyArr);
  324.  
  325.             for (int i = 0; i < SIZE; i++) {
  326.  
  327.                 copyArr[i][counter] = 0;
  328.  
  329.                 for (int j = counter + 1; j < SIZE; j++) {
  330.                     copyArr[j][counter] = number;
  331.  
  332.                     number++;
  333.                 }
  334.  
  335.                 counter++;
  336.             }
  337.  
  338.             for (int i = counter - 1; i > 0; i--) {
  339.  
  340.  
  341.                 for (int j = counter - 2; j >= 0; j--) {
  342.                     copyArr[j][counter - 1] = number;
  343.  
  344.                     number++;
  345.                 }
  346.  
  347.                 counter--;
  348.             }
  349.  
  350.             printArray(copyArr);
  351.  
  352.             choose = -1;
  353.  
  354.             counter = 0;
  355.  
  356.             number = 1;
  357.  
  358.             break;
  359.  
  360.  
  361.         default:
  362.  
  363.             break;
  364.         }
  365.  
  366.     } while (choose < 0 || choose > 2);
  367. }
  368.  
  369.  
  370. int main()
  371. {
  372.     int matrix[SIZE][SIZE];
  373.  
  374.     unsigned short choose = -1;
  375.  
  376.     // Default matrix array values
  377.     startInit(matrix);
  378.  
  379.     do
  380.     {
  381.  
  382.         cout << "Choose action:\n[1] Make null under general diagonal\n[2] Make circle matrix\n[3] Make null diagonal and sort numbers\n:";
  383.         cin >> choose;
  384.  
  385.         switch (choose)
  386.         {
  387.         case 1:
  388.  
  389.             makeZeroUnderGeneralDiagonal(matrix);
  390.  
  391.             choose = -1;
  392.  
  393.             break;
  394.  
  395.         case 2:
  396.  
  397.             makeCircle(matrix);
  398.  
  399.             choose = -1;
  400.  
  401.             break;
  402.  
  403.         case 3:
  404.  
  405.             makeNullDiagonalAndSort(matrix);
  406.  
  407.             choose = -1;
  408.  
  409.             break;
  410.  
  411.         case 4:
  412.  
  413.             makeSpiralOfNumber(matrix);
  414.  
  415.             choose = -1;
  416.  
  417.             break;
  418.  
  419.         default:
  420.  
  421.             break;
  422.         }
  423.  
  424.     } while (choose < 0 || choose > 4);
  425.  
  426. }
  427.  
  428.  
  429.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement