Advertisement
daniil_mironoff

Matrix WTFucker

Mar 21st, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.28 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. int main() {
  15.    
  16.     // Оюъявление переменных для хранения рамзеров матрицы
  17.     int sizeY, sizeX;
  18.    
  19.     // Ввод размеров
  20.     cout << "Введите кол-во строк: ";
  21.     cin >> sizeY;
  22.    
  23.     cout << "Введите кол-во столбцов: ";
  24.     cin >> sizeX;
  25.    
  26.     // Проверка прямоугольности (т.е. должна быть не квадратная)
  27.     while (sizeX == sizeY) {
  28.         cout << endl;
  29.        
  30.         cout << "Матрица должна быть прямоугольной, введите другое кол-во столбцов: ";
  31.         cin >> sizeX;
  32.        
  33.     }
  34.    
  35.     cout << endl;
  36.    
  37.     // Создание двухмерного массива для матрицы
  38.     int ** matrix = new int * [sizeX];
  39.    
  40.     // Заполнения матрицы
  41.     for (int i = 0; sizeX > i; i++) {
  42.         matrix[i] = new int [sizeY];
  43.        
  44.         for (int j = 0; sizeY > j; j++) {
  45.             cout << "Введите значение для " << i + 1 << " столбца " << j + 1 << " строки: ";
  46.             cin >> matrix[i][j];
  47.         }
  48.     }
  49.    
  50.     cout << endl;
  51.    
  52.     // Вывод вводимой матрицы
  53.     cout << "Вводимая матрица:" << endl;
  54.     for (int i = 0; sizeY > i; i++) {
  55.         for (int j = 0; sizeX > j; j++) {
  56.             cout << matrix[j][i] << " ";
  57.         }
  58.        
  59.         cout << endl;
  60.     }
  61.    
  62.     // Инициализация переменных для хранения
  63.     // 1) Максимального кол-во нулевой в столбце
  64.     // 2) Индекс такого столбца
  65.     int max = 0;
  66.     int index_max = -1;
  67.    
  68.     // Поиск столбца
  69.     for (int i = 0; sizeX > i; i++) {
  70.         int count_max = 0;
  71.  
  72.         for (int j = 0; sizeY > j; j++) {
  73.             if (matrix[i][j] == 0) {
  74.                 count_max++;
  75.             }
  76.         }
  77.  
  78.         if (count_max > max) {
  79.             max = count_max;
  80.             index_max = i;
  81.         }
  82.     }
  83.    
  84.     // Если найден хотя бы один
  85.     // столбец хотя бы с одним нулем
  86.     if (index_max != -1) {
  87.  
  88.         // Сдвигаем значения (если нужно)
  89.         for (int i = index_max; sizeX > i + 1; i++) {
  90.             for (int j = 0; sizeY > j; j++) {
  91.                 matrix[i][j] = matrix[i + 1][j];
  92.             }
  93.         }
  94.        
  95.         // Удаляем последний столбец
  96.         delete [] matrix[--sizeX];
  97.  
  98.         cout << endl;
  99.  
  100.         // Вывод новой матрицы
  101.         cout << "Новая матрица:" << endl;
  102.         for (int i = 0; sizeY > i; i++) {
  103.             for (int j = 0; sizeX > j; j++) {
  104.                 cout << matrix[j][i] << " ";
  105.             }
  106.            
  107.             cout << endl;
  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