Advertisement
hunter04d

Untitled

Jan 19th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <ctime>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. void EnterN(int *);
  10. void Gener(int **&, int );
  11. void Init(int **, int);
  12. void OutRomb(int **, int);
  13. void Out(int **, int);
  14. inline int  half(int n);
  15. int sumR(int **, int);
  16. int MaxR(int **, int);
  17.  
  18. int main()
  19. {
  20.     int n;
  21.     EnterN(&n);
  22.     int **matr;
  23.     Gener(matr, n);
  24.     Init(matr, n);
  25.     cout << "Matrix:";
  26.     Out(matr, n);
  27.     cout << "Sum ele in Romb:" << sumR(matr, n) << endl;
  28.     cout << "Max of ele in Romb:" << MaxR(matr, n) << endl;
  29.     cout << "operation Rombi" << endl;
  30.     OutRomb(matr, n);
  31.     system("pause");
  32. }
  33.  
  34.  
  35. void EnterN(int *n)
  36. {
  37.     cout << "Enter he size of the array: ";
  38.     cins:
  39.     cin >> *n;
  40.  
  41.     if(*n <= 0)
  42.     {
  43.         cout << "Incorrect n, try again: ";
  44.         goto cins;
  45.     }
  46. }
  47. void Gener(int **&_p, int n)
  48. {
  49.     _p = new int *[n];
  50.     for (int i = 0 ; i < n; ++i )
  51.     {
  52.         _p[i] = new int[n];
  53.     }
  54. }
  55. void Init(int **p , int n)
  56. {
  57.     srand(time(NULL));
  58.     for (int i = 0; i < n; ++i)
  59.     {
  60.         for (int j = 0; j < n; ++j)
  61.         {
  62.             p[i][j] = rand() % 21 - 10;
  63.         }
  64.     }
  65. }
  66. void OutRomb(int **p, int n)
  67. {
  68.     int min = half(n) - 2, max = n % 2 ? half(n) : half(n) + 1;
  69.     for (int i = 0; i < half(n); ++i)
  70.     {
  71.         for (int j = 0; j < n; ++j)
  72.         {
  73.             if (j > min && j < max)
  74.             {
  75.                 printf("%3d ", p[i][j]);
  76.             }
  77.             else cout << "    ";
  78.         }
  79.         --min; max++;
  80.         cout << endl;
  81.     }
  82.     min = n % 2 ? 0 : -1;
  83.     max = n % 2 ? n - 1 : n;
  84.     for (int i = half(n); i < n; ++i)
  85.     {
  86.         for (int j = 0; j < n; ++j)
  87.         {
  88.             if (j > min && j < max)
  89.             {
  90.                 printf("%3d ", p[i][j]);
  91.             }
  92.             else cout << "    ";
  93.         }
  94.         ++min; --max;
  95.         cout << endl;
  96.     }
  97. }
  98. int sumR(int **p, int n)
  99. {
  100.     int Sum = 0;
  101.     int min = half(n) - 2, max = n % 2 ? half(n) : half(n) + 1;
  102.     for (int i = 0; i < half(n); ++i)
  103.     {
  104.         for (int j = 0; j < n; ++j)
  105.         {
  106.             if (j > min && j < max)
  107.             {
  108.                 Sum += p[i][j];
  109.             }
  110.         }
  111.         --min; ++max;
  112.     }
  113.     min = n % 2 ? 0 : -1;
  114.     max = n % 2 ? n - 1 : n;
  115.     for (int i = half(n); i < n; ++i)
  116.     {
  117.         for (int j = 0; j < n; ++j)
  118.         {
  119.             if (j > min && j < max)
  120.             {
  121.                 Sum += p[i][j];
  122.             }
  123.         }
  124.         ++min; --max;
  125.     }
  126.     return Sum;
  127. }
  128. int MaxR(int **p, int n)
  129. {
  130.     int Max;
  131.     int MaxA;
  132.     bool init = false;
  133.     int curr;
  134.     int min = half(n) - 2, max = n % 2 ? half(n) : half(n) + 1;
  135.     for (int i = 0; i < half(n); ++i)
  136.     {
  137.         for (int j = 0; j < n; ++j)
  138.         {
  139.             if (j > min && j < max)
  140.             {
  141.                 if(init)
  142.                 {
  143.                     curr = abs(p[i][j]);
  144.                     if (curr > Max)
  145.                     {
  146.                         Max = curr;
  147.                         MaxA = p[i][j];
  148.                     }
  149.                 }
  150.                 else
  151.                 {
  152.                     Max = abs(p[i][j]);
  153.                     MaxA = p[i][j];
  154.                     init = true;
  155.                 }
  156.             }
  157.         }
  158.         --min; ++max;
  159.     }
  160.     min = n % 2 ? 0 : -1;
  161.     max = n % 2 ? n - 1 : n;
  162.     for (int i = half(n); i < n; ++i)
  163.     {
  164.         for (int j = 0; j < n; ++j)
  165.         {
  166.             if (j > min && j < max)
  167.             {
  168.                 curr = abs(p[i][j]);
  169.                 if (curr > Max)
  170.                 {
  171.                     Max = curr;
  172.                     MaxA = p[i][j];
  173.                 }
  174.             }
  175.         }
  176.         ++min; --max;
  177.     }
  178.     return Max;
  179. }
  180. void Out(int **p, int n)
  181. {
  182.     for (int i = 0; i < n; ++i)
  183.     {
  184.         for (int j = 0; j < n; ++j)
  185.         {
  186.             printf("%3d ", p[i][j]);
  187.         }
  188.         cout << endl;
  189.     }
  190. }
  191.  
  192.  
  193. inline int  half(int n)
  194. {
  195.     return (n + 1) / 2;
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement