Advertisement
daniil_mironoff

C+++++

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