Write a c program to simulate even parity generator and checker.
Here below is the C program to simulate even parity generator and checker.
#include <stdio.h>
#include <string.h>
// Function to calculate the parity bit for even parity
char generateEvenParity(char data[]) {
int onesCount = 0;
// Count the number of 1's in the data
for (int i = 0; i < strlen(data); i++) {
if (data[i] == '1') {
onesCount++;
}
}
// If the number of 1's is odd, add 1 as parity bit
// If the number of 1's is even, add 0 as parity bit
if (onesCount % 2 == 0) {
return '0'; // Even parity: no need to add 1
} else {
return '1'; // Odd parity: need to add 1
}
}
// Function to check if the received data has even parity
int checkEvenParity(char data[]) {
int onesCount = 0;
// Count the number of 1's in the data
for (int i = 0; i < strlen(data); i++) {
if (data[i] == '1') {
onesCount++;
}
}
// If the number of 1's is even, it's valid; otherwise, it's not
return (onesCount % 2 == 0) ? 1 : 0; // 1 means valid, 0 means invalid
}
int main() {
char data[100];
char parityBit;
// Input the binary data
printf("Enter the binary data (without parity bit): ");
scanf("%s", data);
// Generate even parity bit
parityBit = generateEvenParity(data);
printf("Generated Even Parity Bit: %c\n", parityBit);
// Display data with the parity bit
printf("Data with Parity Bit: %s%c\n", data, parityBit);
// Check the even parity of the received data with the parity bit
printf("Enter received data (with parity bit): ");
scanf("%s", data);
if (checkEvenParity(data)) {
printf("The received data has valid even parity.\n");
} else {
printf("The received data has invalid parity.\n");
}
return 0;
}