#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define project_set_size 20
#define project_id_pos 0
#define grammer_id_pos 1
#define grammer_start_char_pos 5
#define bfchar_pos 2
#define afchar_pos 3
#define project_len_pos 4
#define id 10000
char st[20][30];
int r;
struct grammer
;typedef struct
selemtype;
struct gprjt
;typedef struct prjset
prjset,*pprjset;
struct head
;char dot = '~';
grammer g;
gprjt project;
head root;
void input();
int openfile(char *s);
void createprojectset();
void closure(prjset *prjset);
int go(int rk, prjset *prjset);
void printpojectset();
int isinset(char *s, char ch);
void joinset(char *s, char ch);
void main()
st[r][m]=z[m];
} st[r][m]='@';
r=r+1;
if(w==1) break;
} st[0][0]=st[1][0];st[0][1]='-';st[0][2]='>';st[0][3]=st[1][0];st[0][4]='@';
int count;
int i;
int j;
count = r;
g.line=count;
g.g=(char **)malloc(sizeof(char *)*g.line);
for(i=0; i
for(int x=0;x
else }
}g.vn[0] = g.vt[0] = 0;
for(i=0; i
}g.s = g.vn[1];
count = 0;
for(i=0; i
count += g.g[i][1];
if((project.gp=(char **)malloc(sizeof(char *)*count)) == null)exit(1);
int k;
int pointpos;
int m;
int n;
k = 0;
for(i=0; i
project.gp[k][pointpos] = dot;
for(m=pointpos+1; m<=project.gp[k][project_len_pos]+project_len_pos; m++)
if(pointpos==project.gp[k][project_len_pos]+project_len_pos)
else
if(pointpos==grammer_start_char_pos+1)
else
pointpos++;
k++;}}
project.s = g.s;
project.line = k;
cout<<"輸出拓廣文法:"<<"\n";
for(i=0; i
cout<<"\n";
}cout<<"輸出專案集:"<<"\n";
cout<<"--------------------------------------\n";
for(i=0; i
cout<<"\n";
}cout<<"--------------------------------------\n";
cout<<"\n";
createprojectset();
printpojectset();
for(;;)
;int s=1;
int k=0;
for(int e=0;e
int t=0;
for(i=1;i<=p->pointafter[0]; i++) }
if(t==0)
} if(k==0)
cout<<"\n";
} else cout<<"該字串不是該文法的活字首"<<"\n";
cout<<"繼續輸入字串?(輸入n停止輸入,輸入其他字元繼續)";
char q;cin>>q;
if(q=='n') break;}}
} void createprojectset()
}closure(root.i);
int pos;
for(q=root.i; q!=null; q=q->next)
closure(p);
pprjset ptr;
int flag;
int flagsame;
flagsame = 1;
flag = 1;
for(ptr=root.i; ptr!=null; ptr=ptr->next)
//if
}//for
}//if
else
//else
if(flag == 0)
flagsame = 0;
else
}//for
if(flagsame)//flagsame == 1 , 有與*p相同的專案集,刪除*p
else//將p掛到root.tail
}//for
}//for
}//createprojectset
void closure(prjset *pset)
//if
}//for
}//if
}//for
}//closure
int go(int rk, pprjset prjset)
int pointpos;
pointpos = isinset(&project.gp[rk][project_len_pos], dot);
pointpos += project_len_pos;
rksize = project.gp[rk][project_len_pos];
rks = project.gp[rk][grammer_start_char_pos];
for(i=0; i
}//for
if(flag)
//將專案圓點後的字元加入
return project.gp[i][project_id_pos];
}//if
else
return -1;
}//if
}//for
}//go
void printpojectset()
//for
cout<<"\n";
}//for
cout<<"\n";
for(i=1; i<=p->pointafter[0]; i++)
//for
}//for
cout<<"---------------------\n";
}//printpojectset
int isinset(char *s, char ch)
return 0;
}void joinset(char *s, char ch)
}
JS建構函式的封裝規範
今天在學習js過程中,了解到了js建構函式的封裝規範,下面簡單記錄一下 在很多企業開發中,相關技術人員可能不止你乙個,可能有好幾個甚至乙個團隊來協同進行開發,每個人各司其職,寫不同的 那麼為了各自寫的功能易讀寫。都會吧自己寫的功能封裝成乙個模組。這時,建構函式就起了很大的作用。簡單來說就是吧自己需要...
人臉識別翼閘使用規範 人臉識別翼閘安裝步驟
人臉識別翼閘安裝主要有人臉識別安裝和閘機安裝兩部分,安裝人臉識別翼閘閘機前建議先仔細閱讀產品安裝說明 第一步 先在閘機上安裝好人臉識別,安裝方法如下 1 首先在距離閘機邊緣400mm的中心位置開乙個直徑為48mm的孔位 2 旋開人臉識別裝置底部的六角螺絲。3 把人臉識別裝置安裝在閘機的孔位上,並旋轉...
人臉識別翼閘使用規範 不同型別人臉識別閘機展示
人臉識別閘機是基於強大的人臉深度學習技術 大資料技術,通過比對攝像頭抓拍的現場人臉和資料庫資訊,對行人進行身份認證,比對結果一致則放行,具有識別快速精準,安保級別高等優點。人臉識別閘機現已快速進入人們生活與辦公的場所,應用於機場 火車站 汽車站 海關 商業樓宇 企業園區 智慧型社群等。同時機型多樣,...