C語言程式構建用於正則表示式(a+aa*b)*的DFA
設計一個確定性有限自動機(DFA)來接受語言L = (a+aa*b)*。如果給定的字串被DFA接受,則列印“字串被接受”。否則,列印“字串被拒絕”。
示例1
Input: Enter Input String aaaba Output: String Accepted.
說明 - 給定的字串的形式為(a+aa*b)*,因為第一個字元是a,後面跟著a或ab。
示例2
Input: Enter Input String baabaab Output: String not Accepted.
給定正則表示式(a+aa*b)的DFA如下:

說明 -
如果第一個字元始終為a,則遍歷剩餘字串並檢查是否有任何字元為a或ab。
如果字串中的第一個字元為'b',則列印“字串被拒絕”。
如果在遍歷過程中存在任何除a或b之外的字元,則列印“輸入值錯誤”。
否則,列印“字串被接受”。
程式
以下是構建用於正則表示式(a+aa*b)*的DFA的C語言程式 -
#include<stdio.h>
#include<conio.h>
#include<strings.h>
void main() {
int table[2][2],i,j,l,status=0,success;
char input[100];
printf("To implementing DFA of language (a+aa*b)*
Enter Input String:”);
table[0][0]=1;
table[0][1]=-1;
table[1][0]=1;
table[1][1]=0;
scanf("%s",input);
l=strlen(input);
for (i=0;i<l;i++) {
if(input[i]!='a'&&input[i]!='b') {
printf("The entered Value is wrong");
getch();
exit(0);
}
if(input[i]=='a')
status=table[status][0]; else
status=table[status][1];
if(status==-1) {
printf("String not Accepted");
break;
}
}
if(i==l)
printf("String Accepted");
getch();
}輸出
執行上述程式時,會輸出以下內容 -
Run 1: To implementing DFA of language (a+aa*b)* Enter Input String:cbsd The entered Value is wrong. Run 2: To implementing DFA of language (a+aa*b)* Enter Input String:abbababa String not Accepted. Run 3: To implementing DFA of language (a+aa*b)* Enter Input String:babbaab String not Accepted.
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP