Mercurial > louis > peeves
view arrays/crosses/solution.c @ 0:20fea762903e
Import some exercises and solutions
author | Louis Opter <kalessin@kalessin.fr> |
---|---|
date | Sat, 29 Jun 2013 19:30:31 -0700 |
parents | |
children |
line wrap: on
line source
/* * Write an algorithm such that if an element in an MxN matrix is 0 is entire * row and column is set to 0. */ #include <stdbool.h> #include <stdio.h> #include <stdlib.h> char array[4][4] = { { 'x', 'x', '0', 'x'}, { 'x', 'x', 'x', 'x'}, { 'x', '0', 'x', 'x'}, { 'x', 'x', 'x', 'x'} }; enum { size = 4 }; void print_array(char array[][4]) { for (int i = 0; i != size; i++) { for (int j = 0; j != size; j++) printf(" %c", array[i][j]); printf("\n"); } } void bomb_array(char array[][4]) { bool rows[size] = { false, }; bool columns[size] = { false, }; for (int i = 0; i != size; i++) { for (int j = 0; j != size; j++) { if (array[i][j] == '0') { rows[i] = true; columns[j] = true; } } } for (int i = 0; i != size; i++) { for (int j = 0; j != size; j++) { if (rows[i] || columns[j]) array[i][j] = '0'; } } } int main(void) { print_array(array); printf("Bombing array…\n"); bomb_array(array); print_array(array); return EXIT_SUCCESS; }