Untitled

mail@pastecode.io avatar
unknown
plain_text
19 days ago
2.4 kB
2
Indexable
Never
#include <iostream>
#include <vector>

using namespace std;

void printMatrixWithParity(const vector<vector<int> >& matrix) {
    int rows = matrix.size();
    int cols = matrix[0].size();

    // Create a new matrix with an additional row and column for parity bits
    vector<vector<int> > parityMatrix(rows + 1, vector<int> (cols + 1));

    // Fill the original matrix and calculate row parity
    for (int i = 0; i < rows; ++i) {
        int rowParity = 0;
        for (int j = 0; j < cols; ++j) {
            parityMatrix[i][j] = matrix[i][j];
            rowParity ^= matrix[i][j]; // Calculate row parity (XOR)
        }
        parityMatrix[i][cols] = rowParity; // Store row parity in the last column
    }

    // Calculate column parity
    for (int j = 0; j < cols; ++j) {
        int colParity = 0;
        for (int i = 0; i < rows; ++i) {
            colParity ^= parityMatrix[i][j]; // Calculate column parity (XOR)
        }
        parityMatrix[rows][j] = colParity; // Store column parity in the last row
    }

    // Set the bottom-right cell to the overall parity
    int overallParity = 0;
    for (int i = 0; i < cols; ++i) {
        overallParity ^= parityMatrix[rows][i];
    }
    parityMatrix[rows][cols] = overallParity; // Overall parity

    // Print the matrix with parity bits
    for (int i = 0; i <= rows; ++i) {
        for (int j = 0; j <= cols; ++j) {
            cout << parityMatrix[i][j] << " ";
        }
        cout << endl;
    }
}

int main() {
    int rows, cols;
    cout << "Enter number of rows: ";
    cin >> rows;
    cout << "Enter number of columns: ";
    cin >> cols;

    // Initialize the matrix
    vector<vector<int> > matrix(rows, vector<int> (cols));

    // Input the matrix from the user
    cout << "Enter the binary matrix (0s and 1s only):\n";
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j) {
            cin >> matrix[i][j];
            // Validate input (optional)
            if (matrix[i][j] != 0 && matrix[i][j] != 1) {
                cout << "Invalid input. Please enter 0 or 1.\n";
                --j; // Decrement j to retry the input for the same position
            }
        }
    }

    cout << "Matrix with 2D Parity:\n";
    printMatrixWithParity(matrix);

    return 0;
}
Leave a Comment