1 #include<stdio.h>
2 main()
3 {
4 int i=0,j=0,x=0,y;
5 int number=2;
6 int count=0;
7 char ch;
8 char a[100][100];
9 printf("请输入正规式以#结束 :\n");
10 printf("^代表空\n");
11 printf("|代表或\n");
12 ch=getchar();
13 do
14 {
15 if(ch=='|')
16 {
17 a[i][j]='\0';
18 j=0;
19 i++;
20 ch=getchar();
21 continue;
22 }
23 a[i][j]=ch;
24 j++;
25 ch=getchar();
26 }while(ch!='#');
27 a[i][j]='\0';
28 for(x=0;x<=i;x++)
29 {
30 y=0;
31 count=1;
32 while(a[x][y]!='\0')
33 {
34 if(a[x][y]=='.')
35 {
36
37 if(a[x][y]=='.'&& count==1)
38 {
39 printf("f(0,%c)=%d\n",a[x][y-1],number);
40 if(a[x][y+2]=='\0')
41 printf("f(%d,%c)=1\n",number,a[x][y+1]);
42 number++;
43 count=2;
44 }
45
46 else if(a[x][y]=='.'&& count!=1)
47 {
48
49 printf("f(%d,%c)=%d\n",number-1,a[x][y-1],number);
50 if(a[x][y+2]=='\0')
51 printf("f(%d,%c)=1\n",number,a[x][y+1]);
52 number++;
53 }
54 }
55 if(a[x][y]=='*')
56 {
57 if(a[x][y]=='*'&& count==1)
58 {
59 printf("f(0,^)=%d\n",number);
60 printf("f(%d,%c)=%d\n",number,a[x][y-1],number);
61 if(a[x][y+1]=='\0')
62 printf("f(%d,^)=1\n",number);
63 else
64 printf("f(%d,^)=%d\n",number,number+1);
65 number++;
66 count=2;
67 }
68
69 else if(a[x][y]=='*'&& count!=1)
70 {
71
72 printf("f(%d,%c)=%d\n",number,a[x][y-1],number);
73 if(a[x][y+1]=='\0')
74 printf("f(%d,^)=1\n",number);
75 else
76 printf("f(%d,^)=%d\n",number,number+1);
77 number++;
78 }
79 }
80 y++;
81 }
82 }
83
84 }