SHARE
TWEET

Autómato Data

yyajsayy Jul 26th, 2012 42 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*###################################
  2. #      CODE BY Pedro Tavares        #
  3. #   http://infptavares.blogspot.com #
  4. ####################################*/
  5.  
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9.  
  10. int delta(int M[12][2],int estado, char ch){
  11.  
  12.         int i=0;
  13.        
  14.                 if(estado==-1)
  15.                         return(-1);
  16.        
  17.                 if(ch>='0' && ch<='9'){
  18.  
  19.                         return(M[estado][0]);
  20.                 }
  21.  
  22.  
  23.                 if(ch=='-'){
  24.                         return(M[estado][1]);
  25.                 }
  26.        
  27.                 if(estado==-1)
  28.                         return(-1);
  29.                 else
  30.                         return -1;
  31.                        
  32.  
  33. }
  34.  
  35. int main(){
  36.  
  37.         int M[12][2]={
  38.  
  39.                 {1,11},
  40.                 {2,11},
  41.                 {11,3},
  42.                 {4,11},
  43.                 {5,11},
  44.                 {11,6},
  45.                 {7,11},
  46.                 {8,11},
  47.                 {9,11},
  48.                 {10,11},
  49.                 {11,11},
  50.                 {11,11}
  51.              };        
  52.                
  53.         char buff[15];
  54.         int i,estado=0;
  55.  
  56.         printf("Intruduza a data..\n");
  57.         scanf("%s",buff);
  58.  
  59.  
  60.         for(i=0;i<strlen(buff);i++){
  61.  
  62.                 if(estado==-1)
  63.                         break;         
  64.                
  65.                
  66.                
  67.  
  68.                 switch(estado){
  69.  
  70.                         case 0:
  71.                                 if(atoi(&buff[i])<0 || atoi(&buff[i])>31)
  72.                                         estado=-1;
  73.                                        
  74.                                        
  75.                         break;
  76.  
  77.                         case 3:
  78.                                 if(atoi(&buff[i])<0 || atoi(&buff[i])>12)
  79.                                         estado=-1;
  80.                                
  81.                         break;
  82.                 }
  83.  
  84.                 estado=delta(M,estado,buff[i]);
  85.  
  86.         }
  87.  
  88.  
  89.         if(estado==10)
  90.                 printf("data correcta\n");
  91.         else if(estado==-1)
  92.                
  93.                 printf("data incorrecta\n");
  94.         else
  95.                 printf("data incorrecta\n");
  96.         return(0);
  97. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top