Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.36 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <locale.h>
  4. using namespace std;
  5. const int row = 10, col = 20;
  6. void inp_array_2(int x[][col], int n, int m)
  7. {
  8.     cout << "Введите " << n * m << " чисел" << endl;
  9.     for (int i = 0; i < n; i++)
  10.     {
  11.         for (int j = 0; j < m; j++)
  12.         {
  13.             cin >> x[i][j];
  14.         }
  15.     }
  16. }
  17. void out_array_2(int x[][col], int n, int m)
  18. {
  19.     cout << "Массив чисел" << endl;
  20.     for (int i = 0; i < n; i++)
  21.     {
  22.         for (int j = 0; j < m; j++)
  23.         {
  24.             cout.width(5);
  25.             cout << x[i][j] << ' ';
  26.         }
  27.         cout << endl;
  28.     }
  29. }
  30. void index_max(int x[][col], int n, int m, int &imax, int &jmax) {
  31.     imax = 0; jmax = 0;
  32.     for (int i = 0; i < n; i++) {
  33.         for (int j = 0; j < m; j++) {
  34.             if (x[i][j] > x[imax][jmax]) {
  35.                 imax = i; jmax = j;
  36.             }
  37.         }
  38.     }
  39. };
  40. void change_rows(int x[][col], int n, int m, int i0, int in);
  41. void change_cols(int x[][col], int n, int m, int i0, int in);
  42. void del_row(int x[][col], int& n, int m, int idel);//Удалить строку с заданным номером
  43. void del_row_0(int x[][col], int& n, int m);//Удалить строку с заданным номером
  44. void insert_row_in_array_2(int x[][col], int &n, int m, int *r, int p);
  45. void sort_rows(int x[][col] , int n, int m);
  46. int **create_din_2(int n, int m);
  47. void inp_array_2(int** x, int n, int m);
  48. void out_array_2(int** x, int n, int m);
  49. void del_row(int **x, int& n, int m, int idel);
  50. int main()
  51. {
  52.     setlocale(LC_ALL, "rus");
  53.     int a[row][col], n, m;
  54.     cout << "Введите количество строк: ";
  55.     cin >> n;
  56.     cout << "Введите количество элементов в строке: ";
  57.     cin >> m;
  58.     if (n <= 0 || n > row || m <= 0 || m > col)
  59.     {
  60.         cout << "Размеры должны быть >=0 и меньше " << row << " и " << col << endl;
  61.         return 1;
  62.     }
  63.     inp_array_2(a, n, m);
  64.     out_array_2(a, n, m);
  65.     int im, jm;
  66.     index_max(a, n, m, im, jm);
  67.     cout << "Индекс строки с max=" << im << endl;
  68.     cout << "Индекс столбца с max=" << jm << endl;
  69.     cout << "Значение max =" << a[im][jm] << endl;
  70.     //Переставляем местами строки
  71.     change_rows(a, n, m, 0, n - 1);
  72.     out_array_2(a, n, m);
  73.     //Переставляем местами столбцы
  74.     change_cols(a, n, m, 0, m - 1);
  75.     out_array_2(a, n, m);
  76.     //Удаляем строку
  77.     del_row(a, n, m, 2);
  78.     out_array_2(a, n, m);
  79.     //Удалить все нулевые строки
  80.     del_row_0(a, n, m);
  81.     out_array_2(a, n, m);
  82.     //Вставить строку в позициию p
  83.     int p;
  84.     cout << "Введите строку для вставки" << endl;
  85.     cin >> p;
  86.     if (p < 0 || p > n) cout << "Номер строки выходит за индексы строк"; else {
  87.         int *aa = new int[m];
  88.         cout << "Значения для вставляемой строки из " << m << " элементов" << endl;
  89.         for (int j = 0; j < m; j++) cin >> aa[j];
  90.         insert_row_in_array_2(a, n, m, aa, p);
  91.         out_array_2(a, n, m);
  92.     }
  93.     sort_rows(a, n, m);
  94.     out_array_2(a, n, m);
  95.     int** b = create_din_2(n, m);
  96.     inp_array_2(b, n, m);
  97.     out_array_2(b, n, m);
  98.  
  99.  
  100. }
  101. void change_rows(int x[][col], int n, int m, int i0, int in) {
  102.     int temp;
  103.     for (int j = 0; j < m; j++) {
  104.         temp = x[i0][j];
  105.         x[i0][j] = x[in][j];
  106.         x[in][j] = temp;
  107.  
  108.  
  109.     }
  110. }
  111. void change_cols(int x[][col], int n, int m, int j0, int jm) {
  112.  
  113.     int temp;
  114.     for (int i = 0; i < n; i++) {
  115.         temp = x[i][j0];
  116.         x[i][j0] = x[i][jm];
  117.         x[i][jm] = temp;
  118.     }
  119. }
  120. void del_row(int x[][col], int& n, int m, int idel) {
  121.     if (idel == n - 1) {
  122.         n--; return;
  123.     }
  124.     for (int i = idel; i < n - 1; i++) {
  125.         for (int j = 0; j < m; j++) {
  126.             x[i][j] = x[i + 1][j];
  127.         }
  128.     }
  129.     n--;
  130. }
  131. void del_row_0(int x[][col], int& n, int m) {
  132.     int flag;
  133.     for (int i = 0; i < n; i++) {
  134.         flag = 1;//строка из нулей
  135.         for (int j = 0; j < m&&flag; j++) {
  136.             if (x[i][j] != 0) flag = 0;
  137.         }
  138.         if (flag) {
  139.             if (i != n) {
  140.                 del_row(x, n, m, i);
  141.                 i--;
  142.             }
  143.         }
  144.     }
  145. }
  146. void insert_row_in_array_2(int x[][col], int &n, int m, int *r, int p) {
  147.     //сдвиг вниз
  148.     for (int i = n; i >= p; i--) {
  149.         for (int j = 0; j < m; j++) {
  150.             x[i][j] = x[i - 1][j];
  151.         }
  152.     }
  153.     //замена значений p-ой строки новыми значениями
  154.     for (int j = 0; j < m; j++) {
  155.         x[p][j] = r[j];
  156.     }
  157.     n++;
  158. }
  159. void sort_rows(int x[][col], int n, int m) {
  160.     for (int j = 1; j < n; j++) {
  161.         for (int i = n - 1; i >= j; i--) {
  162.             if (x[i][0] < x[i - 1][0]) change_rows(x, n, m, i, i - 1);
  163.         }
  164.     }
  165. }
  166. int **create_din_2(int n, int m) {
  167.     int **a_2 = new int *[n];
  168.     for (int i = 0; i < n; i++) {
  169.         a_2[i] = new int[m];
  170.     }
  171.     return a_2;
  172. }
  173. void inp_array_2(int** x, int n, int m) {
  174.     cout << "Введите " << n * m << " чисел" << endl;
  175.     for (int i = 0; i < n; i++)
  176.     {
  177.         for (int j = 0; j < m; j++)
  178.         {
  179.             cin >> x[i][j];
  180.         }
  181.     }
  182. }
  183. void out_array_2(int** x, int n, int m) {
  184.     cout << "Массив чисел" << endl;
  185.     for (int i = 0; i < n; i++)
  186.     {
  187.         for (int j = 0; j < m; j++)
  188.         {
  189.             cout.width(5);
  190.             cout << x[i][j] << ' ';
  191.         }
  192.         cout << endl;
  193.     }
  194. }
  195. void del_row(int **x, int& n, int m, int idel) {
  196.     int* p = x[idel];
  197.     if (idel == n - 1) {
  198.         delete []p;
  199.         x = (int **)realloc(x, (n - 1) * 4);
  200.         n--; return;
  201.     }
  202.     delete[]p;
  203.     for (int i = idel; i < n - 1; i++) {
  204.             x[i] = x[i + 1];
  205.     }
  206.     x = (int **)realloc(x, (n - 1) * 4);
  207.     n--;
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement