Programación General > C/C++

 Validar Un Valor Decimal

(1/1)

infonet:
ENCUAENTRAN ALGUN ERROR EN ESTE CODIGO....
NO ME CORRE OK...


--- Código: C++ --- # include <stdio.h># include <conio.h># include <string.h># include <stdlib.h>char cadena[100];int estado=0;int i=0;main (){    printf("INGRESE UN VALOR DECIMAL  :");    gets(cadena);        for        (i=0;((i<strlen(cadena))&&(estado!=3));i++)        {            if (estado==0)                {                    if ((cadena[i]>=48)&&(cadena[i]<=57))                        estado=1;                    if (cadena[i]=='.')                        estado=2;                    else estado=4;                }            else            if (estado==1)                {                    if ((cadena[i] >=48)&&(cadena[i]<=57))                        estado=1;                    if (cadena[i]=='.')                        estado=2;                    else estado=5;                }            else            if (estado==2)                {                    if ((cadena[i] >=48)&&(cadena[i]<=57))                        estado=3;                    else estado=6;                }            else              if (estado==3)                {                    if ((cadena[i] >=48)&&(cadena[i]<=57))                        estado=3;                    else estado=7;                }        }            if (estado==1)                printf("EL NUMERO ES DECIMAL");          {             if (estado==2)                printf("EL NUMERO CONTIENE PUNTO");                   {                    if (estado==3)                        printf("EL NUMERO DECIMAL ES CORRECTO");                    {                        if (estado==4)                            printf("ERROR: DEBE EMPEZAR CON NUMERO O PUNTO");                        {                            if (estado==5)                                printf("ERROR: SOLO SE ACEPTAN NUMEROS");                            {                                if (estado==6)                                    printf("DEBE INGRESAR PUNTO DECIMAL");                                {                                    if (estado==7)                                        printf("SOLO SE HACEPTAN NUMEROS");                                   }                            }                        }                    }                }            getch();            }}  

infonet:
SOLUCIONADO......
--- Código: C++ ---  # include <stdio.h># include <conio.h># include <string.h># include <stdlib.h>char cadena[100];int estado=0;int i=0; main ()  {    printf("INGRESE UN VALOR DECIMAL  :");    gets(cadena);    for (i=0;((i<strlen(cadena))&&(estado!=3));i++) {     if (estado==0)     {      if ((cadena[i]>=48)&&(cadena[i]<=57))   estado=1;       else           if (cadena[i]=='.')      estado=2;         else estado=4;     }      else //else1       {        if (estado==1)        {     if ((cadena[i] >=48)&&(cadena[i]<=57))   estado=1;      else           if (cadena[i]=='.')      estado=2;         else estado=5;        }         else //else2          {     if (estado==2)     {       if ((cadena[i] >=48)&&(cadena[i]<=57))     estado=3;       else estado=6;     }      else //else3     {          if (estado==3)        {   if ((cadena[i] >=48)&&(cadena[i]<=57))        estado=3;   else estado=7;        }      }//else3  }//else2    }//else1 }// for     if (estado==1)  printf("EL NUMERO ES DECIMAL");     if (estado==2)  printf("EL NUMERO CONTIENE PUNTO");     if (estado==3)  printf("EL NUMERO DECIMAL ES CORRECTO");     if (estado==4)  printf("ERROR: DEBE EMPEZAR CON NUMERO O PUNTO");     if (estado==5)  printf("ERROR: SOLO SE ACEPTAN NUMEROS");     if (estado==6)  printf("DEBE INGRESAR PUNTO DECIMAL");     if (estado==7)  printf("SOLO SE HACEPTAN NUMEROS");      getch();}   

Dynyck:
Una duda... Será que solo quieres validar como dice el título... entonces yo ocuparía directamente una entrada tipo float y luego la compararía con la parte entera, algo así:

--- Código: C++ --- float num;std::cin>>num;if(num!=(int)num){std::cout<<"El numero contiene punto y es decimal"<<std::endl;} 
Disculpas si me he equivocado.

infonet:
a ver probraremos con el float....
Muchas Gracias estimado....

Dynyck:
Fijate porque la verdad no me acuerdo si era (int) var o int (var), es simplemente comparar la parte entera con el número.

Navegación

[0] Índice de Mensajes

Ir a la versión completa