Advertisement
jacknpoe

Autômato decide se número é inteiro, decimal ou exponencial

Mar 8th, 2017
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char matriz[9][5] = { { 0, 0, 0, 0, 0 },
  5.                       { 3, 2, 4, 0, 0 },
  6.                       { 3, 0, 4, 0, 0 },
  7.                       { 3, 0, 5, 0, 0 },
  8.                       { 5, 0, 0, 0, 0 },
  9.                       { 5, 0, 0, 6, 0 },
  10.                       { 8, 7, 0, 0, 0 },
  11.                       { 8, 0, 0, 0, 0 },
  12.                       { 8, 0, 0, 0, 0 } };
  13.  
  14. int tipochar( char caracter)
  15. {
  16.     if( caracter >= '0' && caracter <= '9') return( 0);
  17.     if( caracter == '+' || caracter == '-') return( 1);
  18.     if( caracter == '.') return( 2);
  19.     if( caracter == 'E' || caracter == 'e') return( 3);
  20.     return( 4);
  21. }
  22.  
  23. int main( void)
  24. {
  25.     char cadeia[256];
  26.     int estado;
  27.     int contador;
  28.     int tam_cadeia;
  29.  
  30.     printf( "Digite um numero no formato +-XXX.XXXE+-XXX: ");
  31.     scanf( "%256s", cadeia);
  32.  
  33.     tam_cadeia = strlen( cadeia);
  34.  
  35.     estado = 1;
  36.  
  37.     for( contador=0; contador<tam_cadeia; contador ++)
  38.         estado = matriz[ estado][ tipochar( cadeia[ contador])];
  39.  
  40.     if( estado == 0)
  41.         printf( "\nNao Numerico!\n");
  42.     else if( estado == 3)
  43.         printf( "\nNumero Inteiro.\n");
  44.     else if( estado == 5)
  45.         printf( "\nNumero Decimal.\n");
  46.     else if( estado == 8)
  47.         printf( "\nNumero Exponencial.\n");
  48.     else
  49.         printf( "\nIndeterminado. Cadeia Incompleta!\n");
  50.  
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement