Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <ctime>
- #include <algorithm>
- #include <iomanip>
- using namespace std;
- bool uneven(const int &);
- size_t count_uneven_in_string(int *);
- void show(int **);
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- srand(time(NULL));
- system("color 0A");
- cout << "Введите размеры матрицы ";
- size_t n, m;
- cin >> n >> m;
- auto **a = new int*[n];
- for (size_t count = 0u; count < n; ++count)
- a[count] = new int[m + 1];
- auto get_num = []()
- {
- return rand() % 101;
- };
- auto get_string = [a, n, m, get_num]()
- {
- auto str = new int[m];
- generate(str, str + m, get_num);
- return str;
- };
- generate(a, a + n, get_string);
- for (size_t u = 0u; u < n; ++u)
- {
- a[u][m] = 0;
- }
- cout << "Исходная матрица" << endl;
- show(a);
- size_t ind = 0u;
- auto f = [&a, &ind, m](int *t)
- {
- a[ind++][m] = count_uneven_in_string(t);
- };
- for_each(a, a + n, f);
- auto predicate = [m](int *t1, int *t2)
- {
- return t1[m] < t2[m];
- };
- sort(a, a + n, predicate);
- cout << "Обработанная матрица" << endl;
- show(a);
- system("pause");
- return 0;
- }
- bool uneven(const int &k)
- {
- return k & 1u;
- }
- size_t count_uneven_in_string(int *a)
- {
- size_t len = _msize(a) / sizeof(a);
- size_t cnt = 0u;
- for (size_t u = 0u; u < len; ++u)
- {
- cnt += uneven(a[u]);
- }
- return cnt;
- }
- void show(int **a)
- {
- auto n = _msize(a) / sizeof(a);
- auto m = _msize(a[0u]) / sizeof(a[0u]);
- for (size_t u = 0u; u < n; ++u)
- {
- for (size_t p = 0u; p < m; ++p)
- {
- cout << setw(4u) << a[u][p];
- }
- cout << endl;
- }
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement