Из заданной матрицы A(N, N) удалите строку и столбец, в которых находится первый элемент, равный нулю. Полученную матрицу уплотните. Элементы матриц просматривайте слева направо и сверху вниз — C++(Си)

#include <iostream> 
#include <iomanip>
using namespace std; 
int main() 
{   
    const int N = 4; // размер матрицы
    int n = N;  // кол-во строк
    int k = N;  // кол-во столбцов
    int i, j; 
    int a = 0;
    int matrix[N][N] = { 1, 2, 3, 4,  // заполняем матрицу
                         2, 0, 2, 2, 
                         5, 2, 6, 7, 
                         8, 2, 9, 9 };
    // задача состоит в том чтобы удалить стору с 0 и столбец с 0 
    // в данной матрице вообщем надо удалить 0 и все 2
 
    for ( i = 0; i < N; i++) 
        for ( j = 0; j < N; j++)  
        {
            if( j % 4 == 0)  
                cout << endl;  
        cout << setw(3) << matrix[i][j];  // выводим исходную матрицу
        }  
        cout << endl << endl; 
 
        for ( i = 0; i < n; i++) // удаление строки
            for ( j = 0; j < k; j++) 
                if(matrix[i][j] == 0) // когда встречаетя 0
                { 
                    for ( i; i < n; i++)  
                        for ( a = 0; a < k; a++)  
 
                            matrix[i][a] = matrix[i+1][a]; // присваиваем элементы следующей строки
                               n--;// уменьшаем строки на 1
                
                     for ( j; j < k-1; j++)                // удаление столбца
                             for ( a = 0; a < n; a++) 
 
                               matrix[a][j] = matrix[a][j+1]; // присваниваем элементы следующего столбца
                               k--; // уменьшаем столбцы на 1
                }
 
    for ( i = 0; i < n; i++)  // выводим полученную матрицу
        for ( j = 0; j < k; j++)  
        {
            if( j % 4 == 0)  
                cout << endl;  
        cout << setw(3) << matrix[i][j]; 
        }  
        cout << endl << endl; 
}

Следующий вариант

#include <iostream> 
#include <iomanip>
using namespace std; 
int main() 
{   
    const int N = 4; // размер матрицы
    int n = N;  // кол-во строк
    int k = N;  // кол-во столбцов
    int i, j; 
    int a = 0; 
    int flag = 0;
    int matrix[N][N] = { 1, 2, 3, 4,  // заполняем матрицу
                         2, 0, 2, 2, 
                         5, 2, 6, 7, 
                         8, 2, 9, 9 };
    // задача состоит в том чтобы удалить стору с 0 и столбец с 0 
    // в данной матрицв вообщем надо удалить 0 и все 2
 
    for ( i = 0; i < N; i++) 
        for ( j = 0; j < N; j++)  
        {
            if( j % 4 == 0)  
                cout << endl;  
        cout << setw(3) << matrix[i][j];  // выводим исходную матрицу
        }  
        cout << endl << endl; 
 
        for ( i = 0; i < n; i++) // удаление строки
            for ( j = 0; j < k; j++) 
                if(matrix[i][j] == 0) // когда встречаетя 0
                {  
                    if( flag == 0) 
                    {
                    for ( i; i < n; i++)  
                        for ( a = 0; a < k; a++)  
 
                            matrix[i][a] = matrix[i+1][a]; // присваиваем элементы следующей строки
                               n--;// уменьшаем строки на 1
                
                     for ( j; j < k-1; j++)                // удаление столбца
                             for ( a = 0; a < n; a++) 
 
                               matrix[a][j] = matrix[a][j+1]; // присваниваем элементы следующего столбца
                               k--; // уменьшаем столбцы на 1
                }  
                    flag++;
                }
 
    for ( i = 0; i < n; i++)  // выводим полученную матрицу
        for ( j = 0; j < k; j++)  
        {
            if( j % 4 == 0)  
                cout << endl;  
        cout << setw(3) << matrix[i][j]; 
        }  
        cout << endl << endl; 
}

Leave a Comment

8 + 2 =