Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- int proc_S(char*szs, int in, int*pirul, int*ip);
- void WriteRules(int*pirul, int*ip, int irule);
- int _tmain(int argc, _TCHAR* argv[])
- {
- int rules[12];
- int N=0;
- for (int i=0; i<10; i++) rules[i]=0;
- char *wer="aa+a-";
- int len=strlen(wer)-1;
- int k=proc_S(wer,len,rules,&N);
- //if(k!=-2) for (int i=N-1; i>=0; i--) cout<<rules[i]<<endl;
- if(k!=-2) for (int i=0; i<N; i++) cout<<rules[i]<<endl;
- system("pause");
- return 0;
- }
- int proc_S(char*szs, int in, int*pirul, int*ip){
- int i=-2;
- switch(szs[in]){
- case '+':
- WriteRules(pirul, ip, 1);
- i= proc_S(szs, in-1, pirul, ip);
- if(i==-2) return -2;
- i= proc_S(szs, i, pirul, ip);
- return i;
- case '-':
- WriteRules(pirul, ip, 2);
- i= proc_S(szs, in-1, pirul, ip);
- if(i==-2) return -2;
- i= proc_S(szs, i, pirul, ip);
- return i;
- case 'a':
- WriteRules(pirul, ip, 3);
- return in-1;
- }
- return -2;
- }
- void WriteRules(int*pirul, int*ip, int irule){
- pirul[*ip]=irule;
- *ip=*ip+1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement