2.DESIGN AND IMPLEMENTATION OF TABLES USED IN A TRANSLATOR
Mon Apr 07 2025 15:10:01 GMT+0000 (Coordinated Universal Time)
Saved by
@sem
#include <stdio.h>
#include <string.h>
int isValidString(char *str) {
int count_a = 0, count_b = 0;
int state = 0; // q0
printf("\nTransition Table\n");
printf("Current State | Input | Next State\n");
printf("-------------------------------\n");
for (int i = 0; str[i] != '\0'; i++) {
char ch = str[i];
printf("q%d | %c | ", state, ch);
if (state == 0) {
if (ch == 'a') {
count_a++;
printf("q0\n");
} else if (ch == 'b') {
state = 1;
count_b++;
printf("q1\n");
} else {
printf("Reject (Invalid character)\n");
return 0;
}
} else if (state == 1) {
if (ch == 'b') {
count_b++;
printf("q1\n");
} else if (ch == 'a') {
printf("Reject (a after b)\n");
return 0;
} else {
printf("Reject (Invalid character)\n");
return 0;
}
}
}
// Final validation
if (state == 1 && count_a == count_b && count_a > 0) {
printf("\nThe string is valid (a^n b^n)\n");
return 1;
} else {
printf("\nThe string is invalid (a^n b^n)\n");
return 0;
}
}
int main() {
char input[100];
printf("Enter the string: ");
scanf("%99s", input); // Prevent buffer overflow
isValidString(input);
return 0;
}
content_copyCOPY
Comments