#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; }