SHARE
TWEET

Autómato C

yyajsayy Jul 26th, 2012 21 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*###################################
  2. #      CODE BY Pedro Tavares        #
  3. #   http://infptavares.blogspot.pt  #
  4. ####################################*/
  5.  
  6. #include <stdio.h>
  7.  
  8. //função que permite obter o estado do automato
  9. int delta(int M[12][2],int estado, char ch){
  10.  
  11.  
  12.                 //se o estado entrar como -1 sabemos que já não é valido
  13.                 if(estado==-1)
  14.                         return(-1);
  15.             //verificar se o caracter que entra é um digito
  16.                 if(ch>='0' && ch<='9')
  17.             return(M[estado][0]);
  18.             //verificar se é um hifen
  19.                 if(ch=='-')
  20.                         return(M[estado][1]);
  21.  
  22.         if(estado==-1)
  23.                         return(-1);
  24.                 else
  25.                         return -1;
  26.                        
  27.  
  28. }
  29.  
  30. int main(){
  31.         //declaracao da matriz com todos os estados
  32.         int M[12][2]={
  33.  
  34.                 {1,11},
  35.                 {2,11},
  36.                 {11,3},
  37.                 {4,11},
  38.                 {5,11},
  39.                 {11,6},
  40.                 {7,11},
  41.                 {8,11},
  42.                 {9,11},
  43.                 {10,11},
  44.                 {11,11},
  45.                 {11,11}
  46.              };        
  47.                
  48.         char buff[15];
  49.         int i,estado=0;
  50.  
  51.         printf("Intruduza a data..\n");
  52.         gets(buff);
  53.  
  54.     //percorrer todos os caracteres da string
  55.         for(i=0;i<strlen(buff);i++)
  56.         estado=delta(M,estado,buff[i]);
  57.        
  58.  
  59.     //verificar se foi aceite ou nao
  60.         if(estado==10)
  61.                 printf("data correcta\n");
  62.         else if(estado==-1)
  63.                
  64.                 printf("data incorrecta\n");
  65.         else
  66.                 printf("data incorrecta\n");
  67.         return(0);
  68. }
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