Advertisement
genets

Untitled

Jan 29th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.35 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. //формирование динамич двумерного массива (в качестве параметров передаем кол-во строк и столбцов)
  5. int** FormArray(int n, int m)
  6. {
  7.     //выделяем память под массив
  8. //сначала выделяется память под массив указателей размера n
  9.     int** arr = new int*[n];
  10.     for (int i = 0; i < n; i++)
  11.     {
  12.         //в каждой строке выделяем память под m эл-тов
  13.         arr[i] = new int[m];
  14.     }
  15.     //заполняем его
  16.     for (int i = 0; i < n; i++)
  17.     {
  18.         for (int j = 0; j < m; j++)
  19.         {
  20.             //это для ручного ввода если надо
  21.             //cout << "A[" << i << "," << j << "] = ";
  22.             //cin >> arr[i][j];
  23.             //радомно 0 или 1
  24.             arr[i][j] = rand() % 2;
  25.         }
  26.     }
  27.     //возвращаем массив
  28.     return arr;
  29. }
  30.  
  31. //функция распечатки массива (передаем матрицу и ее размеры)
  32. void PrintArray(int** arr, int n, int m)
  33. {
  34. //проходим по строкам
  35.     for (int i = 0; i < n; i++)
  36.     {
  37. //проходим по столбцам
  38.         for (int j = 0; j < m; j++)
  39.         {
  40.             cout << arr[i][j] << "\t";
  41.         }
  42.  
  43. //переход на новую строку
  44.         cout << endl;
  45.     }
  46. }
  47.  
  48. //получение номера столбца
  49. int GetNumberCol(int** arr, int n, int m)
  50. {
  51.     int j_max = -1; //номер столбца с максим серией нулей
  52.     int count_max = 0;//максим кол-во нулей в серии в столбце в рамках всей матрицы
  53.  
  54. //пробегаем по столбцам
  55.     for (int j = 0; j < m; j++)
  56.     {
  57. //максим кол-во нулей в рамках одного столбца
  58.         int count_max_j = 0;
  59.  
  60.         //ищем максим длину серии из нулей
  61.         for (int i = 0; i < n; i++)
  62.         {
  63.             int count = 0;
  64. //поля в столбце идут нули и пока он не закончился считаем кол-во нулей
  65.             while (i < n && arr[i][j] == 0)
  66.             {
  67.                 count++;
  68.                 i++;
  69.             }
  70. //запоминаем если больше максим кол-ва нулей в рамках одного столбца
  71.             if (count > count_max_j)
  72.             {
  73.                 count_max_j = count;
  74.             }
  75.         }
  76.         //если число нулей в столбце больше то запоминаем номер столбца и кол-во нулей в столбце в рамках всей матрицы
  77.         if (count_max_j > count_max)
  78.         {
  79.             count_max = count_max_j;
  80.             j_max = j;
  81.         }
  82.     }
  83. //возвращаем номер столбца
  84.     return j_max;
  85. }
  86.  
  87. int main()
  88. {
  89. //чтоб на русском языке текст выводился
  90.     setlocale(LC_ALL, "rus");
  91. //кол-во строк
  92.     cout << "n = ";
  93.     int n;
  94.     cin >> n;
  95. //кол-во столбцов
  96.     cout << "m = ";
  97.     int m;
  98.     cin >> m;
  99. //вызываем ф-ию формирования матрицы
  100.     int** arr = FormArray(n, m);
  101. //распечатываем ее
  102.     cout << "Исходная матрица" << endl;
  103.     PrintArray(arr, n, m);
  104. //вызываем ф-ия поиска столбца с максим серией нулей
  105.     int num = GetNumberCol(arr, n, m);
  106.  
  107.     cout << "Номер столбца = " << num << endl;
  108.  
  109.     return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement