Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #include <stdlib.h>
- #include <ctime>
- using namespace std;
- void EnterN(int *);
- void Gener(int **&, int );
- void Init(int **, int);
- void OutRomb(int **, int);
- void Out(int **, int);
- inline int half(int n);
- int sumR(int **, int);
- int MaxR(int **, int);
- int main()
- {
- int n;
- EnterN(&n);
- int **matr;
- Gener(matr, n);
- Init(matr, n);
- cout << "Matrix:";
- Out(matr, n);
- cout << "Sum ele in Romb:" << sumR(matr, n) << endl;
- cout << "Max of ele in Romb:" << MaxR(matr, n) << endl;
- cout << "operation Rombi" << endl;
- OutRomb(matr, n);
- system("pause");
- }
- void EnterN(int *n)
- {
- cout << "Enter he size of the array: ";
- cins:
- cin >> *n;
- if(*n <= 0)
- {
- cout << "Incorrect n, try again: ";
- goto cins;
- }
- }
- void Gener(int **&_p, int n)
- {
- _p = new int *[n];
- for (int i = 0 ; i < n; ++i )
- {
- _p[i] = new int[n];
- }
- }
- void Init(int **p , int n)
- {
- srand(time(NULL));
- for (int i = 0; i < n; ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- p[i][j] = rand() % 21 - 10;
- }
- }
- }
- void OutRomb(int **p, int n)
- {
- int min = half(n) - 2, max = n % 2 ? half(n) : half(n) + 1;
- for (int i = 0; i < half(n); ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- if (j > min && j < max)
- {
- printf("%3d ", p[i][j]);
- }
- else cout << " ";
- }
- --min; max++;
- cout << endl;
- }
- min = n % 2 ? 0 : -1;
- max = n % 2 ? n - 1 : n;
- for (int i = half(n); i < n; ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- if (j > min && j < max)
- {
- printf("%3d ", p[i][j]);
- }
- else cout << " ";
- }
- ++min; --max;
- cout << endl;
- }
- }
- int sumR(int **p, int n)
- {
- int Sum = 0;
- int min = half(n) - 2, max = n % 2 ? half(n) : half(n) + 1;
- for (int i = 0; i < half(n); ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- if (j > min && j < max)
- {
- Sum += p[i][j];
- }
- }
- --min; ++max;
- }
- min = n % 2 ? 0 : -1;
- max = n % 2 ? n - 1 : n;
- for (int i = half(n); i < n; ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- if (j > min && j < max)
- {
- Sum += p[i][j];
- }
- }
- ++min; --max;
- }
- return Sum;
- }
- int MaxR(int **p, int n)
- {
- int Max;
- int MaxA;
- bool init = false;
- int curr;
- int min = half(n) - 2, max = n % 2 ? half(n) : half(n) + 1;
- for (int i = 0; i < half(n); ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- if (j > min && j < max)
- {
- if(init)
- {
- curr = abs(p[i][j]);
- if (curr > Max)
- {
- Max = curr;
- MaxA = p[i][j];
- }
- }
- else
- {
- Max = abs(p[i][j]);
- MaxA = p[i][j];
- init = true;
- }
- }
- }
- --min; ++max;
- }
- min = n % 2 ? 0 : -1;
- max = n % 2 ? n - 1 : n;
- for (int i = half(n); i < n; ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- if (j > min && j < max)
- {
- curr = abs(p[i][j]);
- if (curr > Max)
- {
- Max = curr;
- MaxA = p[i][j];
- }
- }
- }
- ++min; --max;
- }
- return Max;
- }
- void Out(int **p, int n)
- {
- for (int i = 0; i < n; ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- printf("%3d ", p[i][j]);
- }
- cout << endl;
- }
- }
- inline int half(int n)
- {
- return (n + 1) / 2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement