/*------------------------------------------------------------------------------ * matrix.c: read and print matrix **----------------------------------------------------------------------------*/ /* Copyright (c) 2009 Peter Bui. All Rights Reserved. * * Peter Bui * **------------------------------------------------------------------------------ * Includes **----------------------------------------------------------------------------*/ #include #include /*------------------------------------------------------------------------------ * Type Definitions **----------------------------------------------------------------------------*/ typedef int** Matrix; /*------------------------------------------------------------------------------ * Functions **----------------------------------------------------------------------------*/ void read_matrix(Matrix *om, int *rows, int *cols) { Matrix m; int r, c; scanf("%d %d", rows, cols); m = *om = malloc(sizeof(int *) * *rows); for (r = 0; r < *rows; r++) { m[r] = malloc(sizeof(int) * *cols); for (c = 0; c < *cols; c++) scanf("%d", &m[r][c]); } } void write_matrix(Matrix m, int rows, int cols) { int r, c; for (r = 0; r < rows; r++) { for (c = 0; c < cols; c++) printf("%d ", m[r][c]); putchar('\n'); } } void free_matrix(Matrix m, int rows, int cols) { int r, c; if (m) { for (r = 0; r < rows; r++) if (m[r]) free(m[r]); free(m); } } /*------------------------------------------------------------------------------ * Main Execution **----------------------------------------------------------------------------*/ int main(int argc, char* argv[]) { Matrix m; int rows, cols; read_matrix(&m, &rows, &cols); write_matrix(m, rows, cols); free_matrix(m, rows, cols); return (EXIT_SUCCESS); } /*------------------------------------------------------------------------------ * vim: sts=4 sw=4 ts=8 ft=c **----------------------------------------------------------------------------*/