How to set a specific column of a matrix to zero if a particular element in that column is zero with C

1 Answer

0 votes
#include <stdio.h>
   
#define COLS 6

void print_matrix(int matrix[][COLS], int rows, int cols) {
    int i, j;
       
    for (i = 0; i < rows; i++) {
        for (j = 0; j < cols; j++) {
            printf("%5i", matrix[i][j]);
        }
           
        printf("\n");
    }
}

int matrix_column_include_number(int matrix[][COLS], int rows, int col, int number) {
    for (int i = 0; i < rows; i++) {
        if (matrix[i][col] == number) {
            return 1;
        }
    }
     
    return 0;
}

void set_matrix_column_to_zero(int matrix[][COLS], int rows, int col) {
    for (int i = 0; i < rows; i++) {
        matrix[i][col] = 0;
    }
}
   
int main() {
    int matrix[][COLS] = { 
            {  4,  7,  9, 18, 29, 0 },
            {  1,  9, 18, 99,  4, 3 },
            {  9, 17, 89,  0,  7, 5 },
            { 19, 49,  0,  1,  9, 8 },
            { 29,  4,  7,  9, 18, 6 } };
   
    int col = 2;
    int rows = sizeof(matrix) / sizeof(matrix[0]);
    
    if (matrix_column_include_number(matrix, rows, col, 0)) {
        set_matrix_column_to_zero(matrix, rows, col);
    }
    
    print_matrix(matrix, rows, COLS);
   
    return 0;
}
   
   
   
/*
run:
   
    4    7    0   18   29    0
    1    9    0   99    4    3
    9   17    0    0    7    5
   19   49    0    1    9    8
   29    4    0    9   18    6
   
*/

 



answered Jul 10, 2024 by avibootz
...