Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- //формирование динамич двумерного массива (в качестве параметров передаем кол-во строк и столбцов)
- int** FormArray(int n, int m)
- {
- //выделяем память под массив
- //сначала выделяется память под массив указателей размера n
- int** arr = new int*[n];
- for (int i = 0; i < n; i++)
- {
- //в каждой строке выделяем память под m эл-тов
- arr[i] = new int[m];
- }
- //заполняем его
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- //это для ручного ввода если надо
- //cout << "A[" << i << "," << j << "] = ";
- //cin >> arr[i][j];
- //радомно 0 или 1
- arr[i][j] = rand() % 2;
- }
- }
- //возвращаем массив
- return arr;
- }
- //функция распечатки массива (передаем матрицу и ее размеры)
- void PrintArray(int** arr, int n, int m)
- {
- //проходим по строкам
- for (int i = 0; i < n; i++)
- {
- //проходим по столбцам
- for (int j = 0; j < m; j++)
- {
- cout << arr[i][j] << "\t";
- }
- //переход на новую строку
- cout << endl;
- }
- }
- //получение номера столбца
- int GetNumberCol(int** arr, int n, int m)
- {
- int j_max = -1; //номер столбца с максим серией нулей
- int count_max = 0;//максим кол-во нулей в серии в столбце в рамках всей матрицы
- //пробегаем по столбцам
- for (int j = 0; j < m; j++)
- {
- //максим кол-во нулей в рамках одного столбца
- int count_max_j = 0;
- //ищем максим длину серии из нулей
- for (int i = 0; i < n; i++)
- {
- int count = 0;
- //поля в столбце идут нули и пока он не закончился считаем кол-во нулей
- while (i < n && arr[i][j] == 0)
- {
- count++;
- i++;
- }
- //запоминаем если больше максим кол-ва нулей в рамках одного столбца
- if (count > count_max_j)
- {
- count_max_j = count;
- }
- }
- //если число нулей в столбце больше то запоминаем номер столбца и кол-во нулей в столбце в рамках всей матрицы
- if (count_max_j > count_max)
- {
- count_max = count_max_j;
- j_max = j;
- }
- }
- //возвращаем номер столбца
- return j_max;
- }
- int main()
- {
- //чтоб на русском языке текст выводился
- setlocale(LC_ALL, "rus");
- //кол-во строк
- cout << "n = ";
- int n;
- cin >> n;
- //кол-во столбцов
- cout << "m = ";
- int m;
- cin >> m;
- //вызываем ф-ию формирования матрицы
- int** arr = FormArray(n, m);
- //распечатываем ее
- cout << "Исходная матрица" << endl;
- PrintArray(arr, n, m);
- //вызываем ф-ия поиска столбца с максим серией нулей
- int num = GetNumberCol(arr, n, m);
- cout << "Номер столбца = " << num << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement