SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: danito en Viernes 23 de Abril de 2004, 16:07

Título: Validacion De Datos
Publicado por: danito en Viernes 23 de Abril de 2004, 16:07
Hola, necesito que por favor me ayuden a validar los datos de entrada.
Cuando utilizo "cin", como hago para que me acepte solo numeros, cuando el dato que leo es de tipo "int".
Título: Re: Validacion De Datos
Publicado por: The Black Boy en Viernes 23 de Abril de 2004, 16:28
imagino que tienes algo como esto.......
Código: Text
  1.  
  2. main()
  3. {
  4.      int x;
  5.      cout<<"\n  Digite Dato";
  6.      cin>>x;
  7. }
  8.  
  9.  


y quieres que el usuario no pueda entrar caracteres de tipo char(letras)

pues no se...  yo colocaria un condicional ( if ) y que evaluara la x si la x esta entre el ASCII (65 y 90) && (97 y 122) entonces arroje un mensaje que diga no se permiten letras, bueno es algo asi de rapidez que se me ocurre...

espero te sirva
un Saludo :hola:
Título: Re: Validacion De Datos
Publicado por: pmike en Sábado 24 de Abril de 2004, 00:13
Hola Danito, yo tengo otro metodo mas artesanal:

Tengo una funcion que comprueba q es entero, si no lo es, pues lo he dirigido a una cadena, bueno la veras con gotoxy, pq me interesaba pasarla con las coordenadas x,y. ademas me devuelve el entero en cuestion para utilizar.


 int comprobarInt(int x,int y)
 {
 char cad[30]="";
 int valorInt=0;
  while(!scanf("%d",&valorInt))//si no es correcto(falso) entro en el bucle
  {
   scanf("%s",&cad); //si el tipo de variable es incorrecta, lo meto en cad
   gotoxy(8,44);cprintf("\a--LO SIENTO INTRODUCE NUMEROS--");
   gotoxy(x,y);cprintf("   ");
   gotoxy(x,y);
  }
   flushall();
   gotoxy(8,44);cprintf("                               ");
   return valorInt;
 }



gueno ya me diras como ta ido gege.

Saludos
Título: Re: Validacion De Datos
Publicado por: piyey en Martes 4 de Mayo de 2004, 02:49
Hola danito, el problema que tienen esos codigos anteriores es que evalua hasta despues que el usuario introdujo el texto, una mejor forma de hacerlo seria mas o menos asi:

#include <stdio.h>
#include <conio.h>

void main()
{ int op;
  int valor=0;
  clrscr();
  while((op=getch())!=13)
  {
    if(op>=48&&op<=57)
    {
      putch(op);
      valor=valor*10+(op-'0');
    }
  }
  printf("\nvalor=%d",valor);
}

si tiene algun problema me avisas porque estoy desde un cyber y no tengo el compilador aqui...

see you!!!!