SHARE
TWEET

Autómato Soma

yyajsayy Jul 26th, 2012 125 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*###################################################
  2. #      Automato Calculadora de Somar                #  
  3. #             Code by Pedro Tavares                 #
  4. #                                                   #
  5. #          web: http://infptavares.blogspot.com     #
  6. #                                                   #
  7. ####################################################*/
  8.  
  9. #include <stdio.h>
  10. #include <string.h>
  11.  
  12.  
  13. int delta(int M[3][2],int estado,char ch){
  14.  
  15.         if (estado==-1)
  16.                 return -1;
  17.  
  18.         if(ch >='0' && ch <='9')
  19.                 return(M[estado][0]);
  20.  
  21.         if(ch=='+')
  22.                 return(M[estado][1]);
  23. return (-1);
  24. }
  25.  
  26.  
  27.  
  28. int main(){
  29.  
  30.         int M[3][2]={
  31.                         {0,1},{0,2},{2,2}
  32.                     }; 
  33.  
  34.         char s[15];
  35.         int estado=0,i,res=0,flag=0;
  36.        
  37.  
  38.         printf("Introduza a String de calculo!\n");
  39.         scanf("%s",s);
  40.        
  41.        
  42.         for(i=0;i<strlen(s);i++){
  43.                
  44.                 estado=delta(M,estado,s[i]);
  45.                        
  46.                 if(estado==-1)
  47.                                 break;
  48.  
  49.                 switch(estado){
  50.  
  51.  
  52.                         case 0:
  53.                                 if(flag==0){
  54.                                         res+=atoi(&s[i]);
  55.                                         flag=1;
  56.                                 }
  57.                                
  58.                         break;
  59.  
  60.  
  61.                         case 1:
  62.                                 flag=0;
  63.                         break;
  64.  
  65.                 }
  66.  
  67.         }
  68.        
  69.         if(estado==0){
  70.                 printf("aceite!\n");
  71.                
  72.                 printf("A soma 'e: %d\n",(res));
  73.                
  74.         }
  75.         else if(estado==-1)
  76.                 printf("Expressao mal construida - Nao aceite\n");
  77.         else{
  78.                 printf("Expressao mal construida - Nao aceite\n");     
  79.         }
  80.  
  81.  
  82.  
  83. return(0);
  84.  
  85. }
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