Advertisement
deyan1

zad1

Oct 13th, 2015
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. int STATE = 0;
  5. enum states { ST0, ST1, ST2, ST3, ST4, ST5, ERROR};
  6.  
  7.  
  8. int statemachine()
  9. {
  10.     int c;
  11.     int row, col;
  12.  
  13.     while(c != EOF)
  14.     {
  15.        
  16.         switch(STATE)
  17.         {
  18.             case ST0:
  19.                 c = getc(stdin);
  20.                 if(c == '.')
  21.                 {
  22.                     STATE = ST1;
  23.                 }
  24.                 else if(isupper(c))
  25.                 {
  26.                     STATE = ST2;
  27.                 }
  28.                 else if(islower(c))
  29.                 {
  30.                     STATE = ST4;
  31.                 }
  32.                 if(islower(c) || isupper(c) || c == '.')
  33.                 {
  34.                     printf("%c", c);
  35.                 }
  36.                
  37.                 break;
  38.                
  39.             case ST1:
  40.                 printf("\t_DOT\n");
  41.                 //ungetc(c, stdin);
  42.                 STATE = ST0;
  43.                 break;
  44.                
  45.             case ST2:
  46.                 c = getc(stdin);
  47.                 if(!islower(c))
  48.                 {
  49.                     STATE = ST3;
  50.                 }
  51.                 if(islower(c) || isupper(c))
  52.                 {
  53.                     printf("%c", c);
  54.                 }
  55.                 break;
  56.                
  57.             case ST3:
  58.                 printf("\t_CAPITAL_WORD (%d,%d)\n ", row, col);
  59.                 ungetc(c, stdin);
  60.                 STATE = ST0;
  61.                 break;
  62.                
  63.             case ST4:
  64.                 c = getc(stdin);
  65.                 if(!islower(c))
  66.                 {
  67.                     STATE = ST5;
  68.                 }
  69.                 if(islower(c) || isupper(c))
  70.                 {
  71.                     printf("%c", c);
  72.                 }
  73.                 break;
  74.                
  75.             case ST5:
  76.                 printf("\t_WORD\n");
  77.                 ungetc(c, stdin);
  78.                 STATE = ST0;
  79.                 break;
  80.                
  81.             default:
  82.                 STATE = ERROR;
  83.                 printf("GRESKA!");
  84.            
  85.         }
  86.        
  87.     }
  88.    
  89.     return 0;
  90. }
  91.  
  92. int main()
  93. {
  94.    
  95.     statemachine();
  96.    
  97.     //printf("Znak je: %c\n", c);
  98.    
  99.     return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement