online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> /* VARIANT 3: instead of using a 2D array to represent a matrix, a custom type is used. That makes it easier/nicer to pass matrices around various places in your code. */ typedef struct { unsigned int rows; unsigned int columns; int *elements; } matrix; matrix matrix_new(unsigned int rows, unsigned int columns) { matrix mat; mat.rows = rows; mat.columns = columns; mat.elements = calloc(rows * columns, sizeof(int)); /* zero matrix */ return mat; } bool matrix_clear(matrix *mat) { if (mat == NULL) return false; mat->rows = 0; mat->columns = 0; free(mat->elements); mat->elements = NULL; return true; } bool matrix_elem(matrix *mat, unsigned int row, unsigned int column, int val) { if (mat == NULL) return false; if (row >= mat->rows || column >= mat->columns) return false; if (mat->elements == NULL) return false; mat->elements[row * mat->columns + column] = val; return true; } bool matrix_compare(const matrix *mat0, const matrix *mat1) { if (mat0 == NULL || mat1 == NULL) return false; if (mat0->rows != mat1->rows) return false; if (mat0->columns != mat1->columns) return false; int *a = mat0->elements; int *b = mat1->elements; unsigned int i = mat0->rows * mat0->columns; while (i--) { if (*a++ != *b++) { return false; } } return true; } int main(void) { matrix mat3 = matrix_new(3, 3); matrix mat4 = matrix_new(3, 3); matrix mat5 = matrix_new(3, 3); matrix_elem(&mat3, 1, 1, 12); matrix_elem(&mat4, 1, 1, 12); matrix_elem(&mat5, 1, 1, 13); //matrix_copy_from_2d_array(&mat6, mat0); // todo if (matrix_compare(&mat3, &mat4)) { printf("VARIANT 3: mat3 and mat4 are equal!\n"); } if (matrix_compare(&mat3, &mat5) == false) { printf("VARIANT 3: mat3 and mat5 are NOT equal!\n"); } matrix_clear(&mat3); matrix_clear(&mat4); matrix_clear(&mat5); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue