### Zero out rows and columns

Zero out the corresponding rows and columns of a 2D matrix if any element is zero
`/*`
` * ZeroRowsAndColumns.cpp`
` *`
` *  Created on: Apr 13, 2012`
` *      Author: Kiran Hegde`
` */`

`#include <iostream>`
`#include <cstdlib>`
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <time.h>`

`using namespace std;`

`/**`
` * If any element of the matrix is zero, then make the entire row and column`
` * zero too`
` */`
`void zeroOutRowsAndColumsOfMatrix(int m, int n, int ** &matrix) {`
`    /*If any row or column needs to be zeroed out, the value will be`
`    initialized to true */`
`    bool *row = new bool[m];`
`    bool *column = new bool[n];`
`    //initialize row and column arrays to false`
`    for (int i = 0; i < m; i++)`
`        row[i] = false;`
`    for (int j = 0; j < n; j++)`
`        column[j] = false;`
`    //set the row and column array to true if a zero is found in that row, column`
`    for (int i = 0; i < m; i++) {`
`        for (int j = 0; j < n; j++) {`
`            if (matrix[i][j] == 0) {`
`                row[i] = true;`
`                column[j] = true;`
`            }`
`        }`
`    }`
`    /*if any row or column was true, all elements of the matrix for that`
`      row or column is set to zero */`
`    for (int i = 0; i < m; i++) {`
`        for (int j = 0; j < n; j++) {`
`            if (row[i] || column[j]) {`
`                matrix[i][j] = 0;`
`            }`
`        }`
`    }`
`    //release memory`
`    delete[] row;`
`    delete[] column;`
`}`

`void generateRandomMatrix(int m, int n, int ** &matrix) {`
`    //initialize a random seed`
`    srand(time(NULL));`
`    for (int i = 0; i < m; i++) {`
`        for (int j = 0; j < n; j++) {`
`            matrix[i][j] = rand() % 9 + 1; //generate a random number from 1 to 9`
`        }`
`    }`
`    //introduce a couple of zeros`
`    int count = 0;`
`    while (count < 2) {`
`        int rowIndex = rand() % m; //random index between 0 and m - 1`
`        int colIndex = rand() % n; //random index between 0 and n - 1`
`        matrix[rowIndex][colIndex] = 0;`
`        count++;`
`    }`
`}`

`void printMatrix(int m, int n, int ** &matrix) {`
`    cout << "Matrix: " << endl;`
`    for (int i = 0; i < m; i++) {`
`        for (int j = 0; j < n; j++) {`
`            cout << matrix[i][j] << " ";`
`        }`
`        cout << endl;`
`    }`
`    cout << endl;`
`}`

`/**`
` * Test the code`
` */`
`int main() {`
`    const int width = 10;`
`    const int height = 10;`
`    //allocate space for 2D array`
`    int **matrix = new int* [width];`
`    for (int i=0; i<width; i++) {`
`        matrix[i] = new int[height];`
`    }`

`    generateRandomMatrix(width, height, matrix);`
`    printMatrix(width, height, matrix);`
`    zeroOutRowsAndColumsOfMatrix(width, height, matrix);`
`    printMatrix(width, height, matrix);`

`    //delete 2D array`
`    for (int i=0; i<width; i++)`
`        delete [] matrix[i];`
`    delete [] matrix;`
`}`