From cf05bf5a424405c9feb7c80eaeca0f476e95d488 Mon Sep 17 00:00:00 2001 From: array-in-a-matrix Date: Wed, 7 Jul 2021 18:20:39 -0400 Subject: [PATCH] locate error --- index.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/index.c b/index.c index 7d3e0f5..605e63b 100644 --- a/index.c +++ b/index.c @@ -6,12 +6,13 @@ #define GRID_SIZE 4 #define LOWER 0 #define UPPER 3 +#define TWO 2 int random_number(int lower, int upper); void print_matrix(int matrix[GRID_SIZE][GRID_SIZE]); void induce_noise(int matrix[GRID_SIZE][GRID_SIZE]); void parity_check(int matrix[GRID_SIZE][GRID_SIZE]); -int error_check(int matrix[GRID_SIZE][GRID_SIZE]); +int error_check(int matrix[GRID_SIZE][GRID_SIZE], int array[TWO]); void parity_check_1(int matrix[GRID_SIZE][GRID_SIZE]); void parity_check_2(int matrix[GRID_SIZE][GRID_SIZE]); @@ -26,7 +27,7 @@ int error_check_4(int matrix[GRID_SIZE][GRID_SIZE]); int main() { srand(time(0)); - + int error_location[2]; int message[GRID_SIZE][GRID_SIZE] = { {1, 0, 0, 1}, {0, 1, 0, 0}, @@ -38,13 +39,21 @@ int main() printf("\n"); print_matrix(message); printf("\n"); - printf("\n"); printf("Message now corrupt!\n"); induce_noise(message); print_matrix(message); printf("\n"); - printf("\n"); - error_check(message); + error_check(message, error_location); + + if (error_location[1] == 0 && error_location[0] == 0) + { + printf("No error or error location: (%i, %i).\n", error_location[0], error_location[1]); + } + else if (!(error_location[1] == 0 && error_location[0] == 0)) + { + printf("Error location: (%i, %i).\n", error_location[0], error_location[1]); + }; + return 0; }; @@ -92,10 +101,9 @@ void parity_check(int matrix[GRID_SIZE][GRID_SIZE]) parity_check_4(matrix); }; -int error_check(int matrix[GRID_SIZE][GRID_SIZE]) +int error_check(int matrix[GRID_SIZE][GRID_SIZE], int array[TWO]) { int error_X, error_Y; - int error_location[2]; int sus_1 = error_check_1(matrix); int sus_2 = error_check_2(matrix); int sus_3 = error_check_3(matrix); @@ -120,7 +128,7 @@ int error_check(int matrix[GRID_SIZE][GRID_SIZE]) } else if (!sus_2) { - error_X = -1; + error_X = 0; }; }; @@ -143,11 +151,13 @@ int error_check(int matrix[GRID_SIZE][GRID_SIZE]) } else if (!sus_4) { - error_Y = -1; + error_Y = 0; }; }; - printf("%i, %i\n", error_Y, error_X); + array[0] = error_Y; + array[1] = error_X; + //TODO: eliminate the need for error_Y && error_X by just using an array return 0; };