• Domingo 6 de Octubre de 2024, 04:30

Autor Tema:  Ayuda Con Validacion  (Leído 2527 veces)

mauricio2

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Ayuda Con Validacion
« en: Lunes 17 de Mayo de 2004, 16:43 »
0
buenas , tengo este codigo en c++ ya tengo validado el ingreso de numeros letras y caracteres especial pero no he podido limitar el largo de los texto que me ingresan, por ejemplo

el numero de cedula es de 10 caracteres el problema es que si dejo pegado el teclado sigue y sigue y se me daña el programa lo otro es que no me deje seguri al siguiente dato si que digite algo, se que no es un foro de c++ pero el php es algo parecido espero me colaboren amigos es para entregar un trabajo de la U.

gracias

captura dato
-----------------------------
   printf("Digite el NOMBRE : ");
   gotoxy(10,8);
   strcpy(dato.nombre,valp());
-----------------------------

 char *valpn()
{
 int vf=0;
 char ch;
 char vcad[40];
 vcad[0]='\0';
 do
  {
   ch=getch();
if((ch >=65)&&(ch<=90)||(ch>=97)&&(ch<=122)||(ch==8)||(ch>=48)&&(ch<=57)||(ch=='-')||(ch=='.')||(ch ==1)||(ch==' ')||(ch=='@'))
   {
     vcad[vf++]=ch;
     vcad[vf]='\0';
     printf("%c",ch);
    }
   }
  while((ch!=13)||(vcad[vf]!=NULL));
  return (vcad);
 }

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #1 en: Lunes 17 de Mayo de 2004, 17:09 »
0
Puede ser porque estas esperando un ENTER aca???

while((ch!=13)||(vcad[vf]!=NULL));

el 13 es ENTER

Salu2!!!!!!!!!!!

mauricio2

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #2 en: Lunes 17 de Mayo de 2004, 17:11 »
0
SI PERO SI SE LO QUITO NO ME DEJA PASA AL OTRO DATO :(

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #3 en: Lunes 17 de Mayo de 2004, 18:02 »
0
Agregale la condicion de leer hasta 10 (o lo q sea) caracteres a parte de comparar contra el ENTER.


Salu2!!!!!!!!!!

mauricio2

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #4 en: Lunes 17 de Mayo de 2004, 18:07 »
0
ALGO ASI

while((ch<=10)||(vcad[vf]!=NULL));

O ES


while((vcad[vf]<=10));

POR CREEME QUE YA Y NADA :(

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #5 en: Lunes 17 de Mayo de 2004, 18:23 »
0
No, lo q tendrias q hacer seria declarar un contador y medida q lees un caracter lo incrementas en uno y en el while comparas contra ese contador q sea menor q 10 en tu caso y listo, asi solo lees 10 caracteres o hasta un ENTER

Salu2!!!!!

mauricio2

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #6 en: Lunes 17 de Mayo de 2004, 18:35 »
0
algo asi:

char *valpn()
{
int vf=0;

char ch;
char vcad[40];
vcad[0]='\0';
do
{
int n;
n=0;
 
     ch=getch();
    if((ch >=65)&&(ch<=90)||(ch>=97)&&(ch<=122)||(ch==8)||(ch>=48)&&   (ch<=57)||(ch=='-')||(ch=='.')||(ch ==1)||(ch==' ')||(ch=='@'))
   {
  vcad[vf++]=ch;
  vcad[vf]='\0';
  printf("%c",ch);
  }

n++;
}
while((n<=10)(ch!=13)||(vcad[vf]!=NULL));
return (vcad);
}

ya lo probe de esa forma :(

sera que tengo algo mal?

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #7 en: Lunes 17 de Mayo de 2004, 18:52 »
0
Si, estas declarando el n dentro del DO-WHILE y lo estas cargando con 0 y luego lo uincrementas y luego a cero y asi.
Fijate.
Lo otro q no entiendo es vcad[vf]!=NULL . Q es eso??? ya q vcad es un vector de caracteres, por q lo comparas con NULL?????

Salu2!!!!!!

AbBaDoN

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #8 en: Lunes 17 de Mayo de 2004, 20:19 »
0
Por lo que interprete del codigo, me parece que lo que queres es capturar una cadena del teclado omitiendo algunos caracteres. Si es asi, tal vez el siguiente codigo te sirva:



#define MAX 80 // define el largo maximo de la cadena

char * valpn() {
 int i; // cuenta los caracteres ingresados
 char buffer[MAX]; // almacena los caracteres ingresados

 do {
  for (i=0; i < MAX && (buffer = getch())!= '\r'; ++i)
   (isalpha(buffer || isdigit(buffer || isspecial(buffer))))? putch(buffer): --i;
 } while i < 1; // para que no quede vacio el buffer i tiene que ser mayor a 0
 buffer = '\0'; // para finalizar la cadena
 return buffer;
}

// isalpha(char c) y isdigit(char c) son funciones de biblioteca que testean
// si c es una letra o un digito respectivamente

#define TOPE 6 // define la cantidad de caracteres especiales
char special[] = {'-','.',' ','@',8,1}; // arreglo de caracteres especiales

int isspecial(char c) {
 int i;
 for (i=0; i < TOPE && special != c; ++i)
  ; // VACIO
 return i < TOPE;
} // revisa el arreglo de caracteres especiales y devuelve TRUE si lo encontro :lol:

mauricio2

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #9 en: Martes 18 de Mayo de 2004, 15:37 »
0
TE AGRADEZCO MUCHO TU CODIGO ES BUENO, EN CUANTO EL MIO YA LO LOGRE HACER POR MEDIO DE UN CONTADOR.

LO HABIA INTENETADO ANTES PERO TENIA UN ERROR POR LO TANTO EL BLUCE BO ME FUNCIONABA PAR CONTAR LAS ENTRADAS DE CADA CARACTER PERO Y DE TODAS FORMAS TODOS SON UNOS AMIGAZOS

BUENO HAY ALGO QUE ME FALTA Y ES COMO VALIDAR QUE ME INGRESEN DATOS Y NO QUE ME LOS DEJE VACIOS MIREN ESTO:


EN EL WHILE

ESTA REFERENCIADO EL NULL SUPUESTAMENTE PARA UQE LA CADENA NO ESTE VACIA PERO NO FUNCIONA, NO SE SI FUNCIONE EL NULL INTENTE CON NULL Y TANBIEN CON COMILLAS Y UN VACIO.

ALGUIEN EM PODRIA DAR UN EJEMPLITO DE COMO VALIDAR UN VACIO DE UN INGRESO DE DATOS.

LA OTRA ES QUE CUANDO LLEGA AL RANGO QUE DELIMITO QUE ES 7 CARACTERES EL AUTOMATICAMENTE ME PASA AL SIGUIENTE PRINTF QUE ME PIDE EL NUEVO DATO COMO HAGO PARA QUE NO ME SIGA DERECHO SI NO QUE AL FINAL DE LA CADENA ME PIDA NECESARIAMENTE ENTEER PARA PODER SEGUIR CON EL SIGUIENTE DATO.

SALUDO

SI ALGUIEN NECESITA EL CODIGO QUE TRABAJO PARA LA VALIDACION CON MUCHO GUSTO SE LOS EXPLICARE.

mauricio2

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Con Validacion
« Respuesta #10 en: Martes 18 de Mayo de 2004, 18:58 »
0
AMIGOS YA TERMINE MUCHAS GRACAIS ALOS QUE DE ALGUNA FORMA ME COLABORARON.

;)