Advertisement
DasShelmer

6.6.15

Nov 4th, 2019
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4.  
  5. void removeLine(int** arr, int& al, int& bl, int index, bool isAorB = true) {
  6.     if (isAorB) {
  7.         al--;
  8.         for (int i = index; i < al; i++)
  9.             arr[i] = arr[i + 1];
  10.     }
  11.     else{
  12.         bl--;
  13.         for (int i = 0; i < al; i++)
  14.             for (int j = index; j < bl; j++)
  15.                 arr[i][j] = arr[i][j + 1];
  16.     }
  17. }
  18.  
  19. int getZerosLine(int** arr, int a, int b, bool isAorB = true) {
  20.     if (isAorB) {
  21.         for (int i = 0; i < a; i++) {
  22.             bool flag = false;
  23.             for (int j = 0; j < b; j++)
  24.                 if (arr[i][j] != 0) {
  25.                     flag = true;
  26.                     break;
  27.                 }
  28.             if (!flag)
  29.                 return i;
  30.         }
  31.     }
  32.     else
  33.     {
  34.         for (int j = 0; j < b; j++) {
  35.             bool flag = false;
  36.             for(int i = 0; i < a; i++)
  37.                 if (arr[i][j] != 0) {
  38.                     flag = true;
  39.                     break;
  40.                 }
  41.             if (!flag)
  42.                 return j;
  43.         }
  44.     }
  45.     return -1;
  46. }
  47.  
  48. int main() {
  49.     setlocale(LC_ALL, "Russian");
  50.     int i, j, col, row;
  51.     cout << "Введите размер массива Столбцы, Строки: ";
  52.     cin >> col >> row;
  53.     int** arr = new int* [col];
  54.     for (i = 0; i < col; i++) {
  55.         arr[i] = new int[row];
  56.     }
  57.  
  58.     cout << "Заполните массив: " << endl;
  59.     for (i = 0; i < row; i++)
  60.         for (j = 0; j < col; j++)
  61.             cin >> arr[j][i];
  62.  
  63.     for (i = 0; i < col; i++) {
  64.         int indx = getZerosLine(arr, col, row, true);
  65.         if (indx > -1)
  66.             removeLine(arr, col, row, indx, true);
  67.     }
  68.     for (i = 0; i < row; i++) {
  69.         int indx = getZerosLine(arr, col, row, false);
  70.         if (indx > -1)
  71.             removeLine(arr, col, row, indx, false);
  72.     }
  73.  
  74.  
  75.     cout << "Результирующий массив: " << endl;
  76.     for (i = 0; i < row; i++) {
  77.         for (j = 0; j < col; j++)
  78.             cout << setw(4) << arr[j][i] << " ";
  79.         cout << endl;
  80.     }
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement