Untitled

 avatar
unknown
plain_text
2 years ago
2.8 kB
3
Indexable
void initialization3()
{
    char** matrix = NULL;
    int sizerow = 0;
    int sizecol = 0;
    std::cout<<"Enter size row for matrix -> "<<std::endl;
    std::cin>>sizerow;
    matrix = new char*[sizerow];
    std::cout<<"Enter size col for matrix -> ";
    std::cin>>sizecol;
    for (int i = 0; i < sizerow; ++i)
    {
        matrix[i] = new char[sizecol];
    }
    resetmatrix(matrix , sizerow , sizecol);
}
void resetmatrix(char** matrix , int sizerow , int sizecol)
{
    for (int i = 0; i < sizerow; ++i)
    {
        for (int j = 0; j < sizecol; ++j)
        {
            std::cin>>matrix[i][j];
            if (matrix[i][j] != '0' && matrix[i][j] != '1')
            {
                do
                {
                    std::cin>>matrix[i][j];
                } while (matrix[i][j] != '0' && matrix[i][j] != '1');
            }
            
        }
    }
    
    PrintMatrix(matrix,sizerow,sizecol);
}
void PrintMatrix(char** matrix , int sizerow , int sizecol)
{
    std::cout<<std::endl;
    std::cout<<std::endl;
    for (int i = 0; i < sizerow; ++i)
    {
        for (int j = 0; j < sizecol; ++j)
        {
            std::cout<<" "<<matrix[i][j]<<" ";
        }
        std::cout<<std::endl;
        std::cout<<std::endl;
    }
   bool result = check(matrix, sizerow, sizecol);
    if (result)
    {
        std::cout<<"The matrix is -> Correct"<<std::endl;
    }
    else
        std::cout<<"The matrix is -> Not Correct"<<std::endl;

}
bool check(char** matrix, int sizerow, int sizecol)
{
    for (int i = 0; i < sizerow; i++)
    {
        int row_sum = 0;
        for (int j = 0; j < sizecol; j++)
        {
            if (matrix[i][j] == '1')
            {
                row_sum += 1 << (sizecol - 1 - j);
            }
        }
        if (i > 0)
        {
            int prev_row_sum = 0;
            for (int j = 0; j < sizecol; j++)
            {
                if (matrix[i - 1][j] == '1')
                {
                    prev_row_sum += 1 << (sizecol - 1 - j);
                }
            }
            if (row_sum <= prev_row_sum)
            {
                return false;
            }
        }
    }

    for (int j = 0; j < sizecol; j++)
    {
        int col_sum = 0;
        for (int i = 0; i < sizerow; i++)
        {
            if (matrix[i][j] == '1')
            {
                col_sum += 1 << (sizerow - 1 - i);
            }
        }
        if (j > 0)
        {
            int prev_col_sum = 0;
            for (int i = 0; i < sizerow; i++)
            {
                if (matrix[i][j - 1] == '1')
                {
                    prev_col_sum += 1 << (sizerow - 1 - i);
                }
            }
            if (col_sum <= prev_col_sum)
            {
                return false;
            }
        }
    }

    return true;
}
Editor is loading...