poj 1896 Code Formatting

poj 1896 Code Formatting
http://poj.org/problem?id=1896
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2463
格式化一段代码,格式题目里说的很清楚了。
zoj上的只不过多CASE而已

直接上code:  
1
 #include<cstdio>

 2  #include < cstring >
 3 
 4  using   namespace  std;
 5  char  s[ 20000000 ];
 6  int  lev  =   0 ;
 7  void  printsp()
 8  {
 9       for ( int  i  =   0 ; i  <   4   *  lev;  ++ i) putchar( '   ' );
10  }
11  int  main()
12  {
13       // freopen("in.txt","r",stdin);
14       // freopen("out.txt","w",stdout);
15       char  c;
16       int  len  =   0 ;
17       for (; scanf( " %c " , & c)  !=  EOF;) {
18           if (c  !=   '   '   &&  c  !=   10   &&  c  !=   13   &&  c  !=   9 )
19              s[len ++ =  c;
20      }
21       // for(int i = 0; i < len; ++i) putchar(s[i]);
22       bool  flag  =   false ;
23       for ( int  i  =   0 ; i  <  len;  ++ i) {
24           if (i  ==   0 ) {
25              flag  =   true ;
26              printf( " {\n " );
27              lev ++ ;
28          }  else  {
29               if (s[i]  !=   ' { '   &&  s[i]  !=   ' ; '   &&  s[i]  !=   ' } ' ) {
30                  if (flag) printsp();flag  =   false ;
31                   if (s[i]  ==   ' , ' ) printf( " " );
32                   else  putchar(s[i]);
33              }
34               if (s[i]  ==   ' ; ' ) {
35                  flag  =   true ;
36                  printf( " ;\n " );
37              }  else   if (s[i]  ==   ' { ' ) {
38                  flag  =   true ;
39                  printf( "  {\n " );
40                   ++ lev;
41              }  else   if (s[i]  ==   ' } ' ) {
42                  flag  =   false ;
43                  lev -- ;
44                  printsp();
45                  printf( " } " );
46                  /*  ++i;
47                  while(s[i] != '{' && s[i] != ';' && i < len) {
48                      putchar(s[i]);
49                      ++i;
50                  }
51                  if(i < len && s[i] == ';')
52                      printf(";\n");
53                  else if(i < len && s[i] == '{') {
54                      flag = true;
55                      printf("\n{\n"); */
56                    //    ++lev;
57                  //  }
58                  if (i  +   1   <  len  &&  s[i + 1 ==   ' { ' ) {
59                      flag  =   true ;
60                      printf( " \n{\n " );
61                       ++ i; ++ lev;
62                 }
63              }
64          }
65      }
66       // printf("fuck!!!\n");
67       return   0 ;
68  }

你可能感兴趣的:(poj 1896 Code Formatting)