error detection (need 2 isolate error cord & fix)
This commit is contained in:
parent
5323e2353a
commit
4c88e91128
167
index.c
167
index.c
|
@ -6,14 +6,21 @@
|
||||||
#define LOWER 0
|
#define LOWER 0
|
||||||
#define UPPER 3
|
#define UPPER 3
|
||||||
|
|
||||||
void print_matrix(int matrix[GRID_SIZE][GRID_SIZE]);
|
|
||||||
int random_number(int lower, int upper);
|
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 induce_noise(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
|
|
||||||
void parity_check_1(int matrix[GRID_SIZE][GRID_SIZE]);
|
void parity_check_1(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
void parity_check_2(int matrix[GRID_SIZE][GRID_SIZE]);
|
void parity_check_2(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
void parity_check_3(int matrix[GRID_SIZE][GRID_SIZE]);
|
void parity_check_3(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
void parity_check_4(int matrix[GRID_SIZE][GRID_SIZE]);
|
void parity_check_4(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
|
|
||||||
|
void error_check_1(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
|
void error_check_2(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
|
void error_check_3(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
|
void error_check_4(int matrix[GRID_SIZE][GRID_SIZE]);
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
srand(time(0));
|
srand(time(0));
|
||||||
|
@ -25,26 +32,33 @@ int main()
|
||||||
{1, 0, 1, 1}};
|
{1, 0, 1, 1}};
|
||||||
|
|
||||||
print_matrix(message);
|
print_matrix(message);
|
||||||
printf("\n");
|
|
||||||
parity_check_1(message);
|
parity_check_1(message);
|
||||||
printf("\n");
|
|
||||||
print_matrix(message);
|
|
||||||
printf("\n");
|
|
||||||
parity_check_2(message);
|
parity_check_2(message);
|
||||||
printf("\n");
|
|
||||||
print_matrix(message);
|
|
||||||
printf("\n");
|
|
||||||
parity_check_3(message);
|
parity_check_3(message);
|
||||||
printf("\n");
|
|
||||||
print_matrix(message);
|
|
||||||
printf("\n");
|
|
||||||
parity_check_4(message);
|
parity_check_4(message);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
print_matrix(message);
|
print_matrix(message);
|
||||||
|
printf("\n");
|
||||||
|
printf("\n");
|
||||||
|
printf("Message now corrupt!\n");
|
||||||
|
induce_noise(message);
|
||||||
|
print_matrix(message);
|
||||||
|
printf("\n");
|
||||||
|
printf("\n");
|
||||||
|
error_check_1(message);
|
||||||
|
error_check_2(message);
|
||||||
|
error_check_3(message);
|
||||||
|
error_check_4(message);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int random_number(int lower, int upper)
|
||||||
|
{
|
||||||
|
int num = (rand() % (upper - lower + 1)) + lower;
|
||||||
|
return num;
|
||||||
|
};
|
||||||
|
|
||||||
void print_matrix(int matrix[GRID_SIZE][GRID_SIZE])
|
void print_matrix(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
{
|
{
|
||||||
for (int i = 0; i < GRID_SIZE; i++)
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
@ -57,12 +71,6 @@ void print_matrix(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
int random_number(int lower, int upper)
|
|
||||||
{
|
|
||||||
int num = (rand() % (upper - lower + 1)) + lower;
|
|
||||||
return num;
|
|
||||||
};
|
|
||||||
|
|
||||||
void induce_noise(int matrix[GRID_SIZE][GRID_SIZE])
|
void induce_noise(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
{
|
{
|
||||||
int random_X = random_number(LOWER, UPPER);
|
int random_X = random_number(LOWER, UPPER);
|
||||||
|
@ -81,6 +89,7 @@ void induce_noise(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void parity_check_1(int matrix[GRID_SIZE][GRID_SIZE])
|
void parity_check_1(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
{
|
{
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
|
@ -106,12 +115,10 @@ void parity_check_1(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
|
|
||||||
if ((counter % 2) == 0)
|
if ((counter % 2) == 0)
|
||||||
{
|
{
|
||||||
printf("even number of 1s\n");
|
|
||||||
matrix[0][1] = 0;
|
matrix[0][1] = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("odd number of 1s\n");
|
|
||||||
matrix[0][1] = 1;
|
matrix[0][1] = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -141,12 +148,10 @@ void parity_check_2(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
|
|
||||||
if ((counter % 2) == 0)
|
if ((counter % 2) == 0)
|
||||||
{
|
{
|
||||||
printf("even number of 1s\n");
|
|
||||||
matrix[0][2] = 0;
|
matrix[0][2] = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("odd number of 1s\n");
|
|
||||||
matrix[0][2] = 1;
|
matrix[0][2] = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -176,12 +181,10 @@ void parity_check_3(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
|
|
||||||
if ((counter % 2) == 0)
|
if ((counter % 2) == 0)
|
||||||
{
|
{
|
||||||
printf("even number of 1s\n");
|
|
||||||
matrix[1][0] = 0;
|
matrix[1][0] = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("odd number of 1s\n");
|
|
||||||
matrix[1][0] = 1;
|
matrix[1][0] = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -211,12 +214,126 @@ void parity_check_4(int matrix[GRID_SIZE][GRID_SIZE])
|
||||||
|
|
||||||
if ((counter % 2) == 0)
|
if ((counter % 2) == 0)
|
||||||
{
|
{
|
||||||
printf("even number of 1s\n");
|
|
||||||
matrix[2][0] = 0;
|
matrix[2][0] = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("odd number of 1s\n");
|
|
||||||
matrix[2][0] = 1;
|
matrix[2][0] = 1;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void error_check_1(int matrix[GRID_SIZE][GRID_SIZE]){
|
||||||
|
int counter = 0;
|
||||||
|
int col_1[GRID_SIZE], col_3[GRID_SIZE];
|
||||||
|
|
||||||
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
{
|
||||||
|
col_1[i] = matrix[i][1];
|
||||||
|
col_3[i] = matrix[i][3];
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
{
|
||||||
|
if (col_1[i] == 1)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
};
|
||||||
|
if (col_3[i] == 1)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if((counter % 2) != 0){
|
||||||
|
printf("Error in col 1 or col 3\n");
|
||||||
|
}else{
|
||||||
|
printf("Message is unharmed.\n");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
void error_check_2(int matrix[GRID_SIZE][GRID_SIZE]){
|
||||||
|
int counter = 0;
|
||||||
|
int col_2[GRID_SIZE], col_3[GRID_SIZE];
|
||||||
|
|
||||||
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
{
|
||||||
|
col_2[i] = matrix[i][2];
|
||||||
|
col_3[i] = matrix[i][3];
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
{
|
||||||
|
if (col_2[i] == 1)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
};
|
||||||
|
if (col_3[i] == 1)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if((counter % 2) != 0){
|
||||||
|
printf("Error in col 2 or col 3\n");
|
||||||
|
}else{
|
||||||
|
printf("Message is unharmed.\n");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
void error_check_3(int matrix[GRID_SIZE][GRID_SIZE]){
|
||||||
|
int counter = 0;
|
||||||
|
int row_1[GRID_SIZE], row_3[GRID_SIZE];
|
||||||
|
|
||||||
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
{
|
||||||
|
row_1[i] = matrix[1][i];
|
||||||
|
row_3[i] = matrix[3][i];
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
{
|
||||||
|
if (row_1[i] == 1)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
};
|
||||||
|
if (row_3[i] == 1)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if((counter % 2) != 0){
|
||||||
|
printf("Error in row 1 or row 3\n");
|
||||||
|
}else{
|
||||||
|
printf("Message is unharmed.\n");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
void error_check_4(int matrix[GRID_SIZE][GRID_SIZE]){
|
||||||
|
int counter = 0;
|
||||||
|
int row_2[GRID_SIZE], row_3[GRID_SIZE];
|
||||||
|
|
||||||
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
{
|
||||||
|
row_2[i] = matrix[2][i];
|
||||||
|
row_3[i] = matrix[3][i];
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < GRID_SIZE; i++)
|
||||||
|
{
|
||||||
|
if (row_2[i] == 1)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
};
|
||||||
|
if (row_3[i] == 1)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if((counter % 2) != 0){
|
||||||
|
printf("Error in row 2 or row 3\n");
|
||||||
|
}else{
|
||||||
|
printf("Message is unharmed.\n");
|
||||||
|
};
|
||||||
};
|
};
|
Loading…
Reference in a new issue