Share Pastebin
Guest
Public paste!

hftest6

By: a guest | Mar 15th, 2010 | Syntax: C | Size: 2.84 KB | Hits: 76 | Expires: Never
Copy text to clipboard
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /*
  5. A regularis kifejezes:
  6. ^[^#]_?(0)*[0-9]+V6.+[A-Z]*.+mmese(A|b)
  7. Egyszerusitve:
  8. ^[^#]_?[0-9]+V6..+mmese(A|b)
  9. */
  10.  
  11. enum allapot {
  12.         start,
  13.         end,
  14.         nothashmark,            // nem #
  15.         underline,              // _
  16.         num,                    // [0-9]
  17.         v,
  18.         v6,
  19.         dot,
  20.         dot2,
  21.         m,
  22.         mm,
  23.         mme,
  24.         mmes,
  25.         mmese,
  26.         mmeseaorb} a;
  27.  
  28. int main()
  29. {
  30.         char ch;
  31.         int line = 0, regline = 0;
  32.         a = start;
  33.         while((ch=getchar()) != EOF)
  34.         {
  35.                 switch(a)
  36.                 {
  37.                         case start:
  38.                                 if((ch == '#') || (ch == '\n'))
  39.                                 {
  40.                                         a=end;
  41.                                 }
  42.                                 else
  43.                                 {
  44.                                         a = nothashmark;
  45.                                 }
  46.                                 break;
  47.                         case end:
  48.                                 if(ch == '\n')
  49.                                 {
  50.                                         a = start;
  51.                                         line++;
  52.                                 }
  53.                                 else
  54.                                 {
  55.                                         a = end;
  56.                                 }
  57.                                 break;
  58.                         case nothashmark:
  59.                                 if(ch == '_')
  60.                                 {
  61.                                         a = underline;
  62.                                 }
  63.                                 else if((ch >= '0') && (ch <= '9'))
  64.                                 {
  65.                                         a = num;
  66.                                 }
  67.                                 else
  68.                                 {
  69.                                         a = end;
  70.                                 }
  71.                                 break;
  72.                         case underline:
  73.                                 if((ch >= '0') && (ch <= '9'))
  74.                                 {
  75.                                         a = num;
  76.                                 }
  77.                                 else
  78.                                 {
  79.                                         a = end;
  80.                                 }
  81.                                 break;
  82.                         case num:
  83.                                 if(ch == 'V')
  84.                                 {
  85.                                         a = v;
  86.                                 }
  87.                                 else if((ch >= '0') && (ch <= '9'))
  88.                                 {
  89.                                         a = num;
  90.                                 }
  91.                                 else
  92.                                 {
  93.                                         a = end;
  94.                                 }
  95.                                 break;
  96.                         case v:
  97.                                 if(ch == '6')
  98.                                 {
  99.                                         a = v6;
  100.                                 }
  101.                                 else
  102.                                 {
  103.                                         a = end;
  104.                                 }
  105.                                 break;
  106.                         case v6:
  107.                                 if(ch == '\n')
  108.                                 {
  109.                                         a = end;
  110.                                 }
  111.                                 else
  112.                                 {
  113.                                         a = dot;
  114.                                 }
  115.                                 break;
  116.                         case dot:
  117.                                 if(ch == '\n')
  118.                                 {
  119.                                         a = end;
  120.                                 }
  121.                                 else
  122.                                 {
  123.                                         a = dot2;
  124.                                 }
  125.                                 break;
  126.                         case dot2:
  127.                                 if(ch == 'm')
  128.                                 {
  129.                                         a = m;
  130.                                 }
  131.                                 else if(ch == '\n')
  132.                                 {
  133.                                         a = end;
  134.                                 }
  135.                                 else
  136.                                 {
  137.                                         a = dot2;
  138.                                 }
  139.                                 break;
  140.                         case m:
  141.                                 if(ch == 'm')
  142.                                 {
  143.                                         a = mm;
  144.                                 }
  145.                                 else if(ch == '\n')
  146.                                 {
  147.                                         a = end;
  148.                                 }
  149.                                 else
  150.                                 {
  151.                                         a = dot2;
  152.                                 }
  153.                                 break;
  154.                         case mm:
  155.                                 if(ch == 'e')
  156.                                 {
  157.                                         a = mme;
  158.                                 }
  159.                                 else if(ch == 'm')
  160.                                 {
  161.                                         a = mm;
  162.                                 }
  163.                                 else if(ch == '\n')
  164.                                 {
  165.                                         a = end;
  166.                                 }
  167.                                 else
  168.                                 {
  169.                                         a = dot2;
  170.                                 }
  171.                                 break;
  172.                         case mme:
  173.                                 if(ch == 's')
  174.                                 {
  175.                                         a = mmes;
  176.                                 }
  177.                                 else if(ch == '\n')
  178.                                 {
  179.                                         a = end;
  180.                                 }
  181.                                 else
  182.                                 {
  183.                                         a = dot2;
  184.                                 }
  185.                                 break;
  186.                         case mmes:
  187.                                 if(ch == 'e')
  188.                                 {
  189.                                         a = mmese;
  190.                                 }
  191.                                 else if(ch == '\n')
  192.                                 {
  193.                                         a = end;
  194.                                 }
  195.                                 else
  196.                                 {
  197.                                         a = dot2;
  198.                                 }
  199.                                 break;
  200.                         case mmese:
  201.                                 if((ch == 'A') || (ch == 'b'))
  202.                                 {
  203.                                         a = mmeseaorb;
  204.                                 }
  205.                                 else if(ch == '\n')
  206.                                 {
  207.                                         a = end;
  208.                                 }
  209.                                 else
  210.                                 {
  211.                                         a = dot2;
  212.                                 }
  213.                                 break;
  214.                         case mmeseaorb:
  215.                                 if(ch == '\n')
  216.                                 {
  217.                                         regline++;
  218.                                         a = start;
  219.                                 }
  220.                                 if(ch == 'm')
  221.                                 {
  222.                                         a = m;
  223.                                 }
  224.                                 else
  225.                                 {
  226.                                         a = dot2;
  227.                                 }
  228.                                 break;
  229.                 }
  230.         }
  231.         printf("%o/%o\n", line, regline);
  232.         return 0;
  233. }