Funcion para validar datos

esta es una pequeña funcion que pretende validar los datos introducidos por el teclado.

esta es una prueba de la aplicacion:



Este es el codigo:

  1 #include <stdio.h> 
  2 #include <iostream.h> 
  3 #include <conio.h> 
  4 #include <stdlib.h> 
  5 #include <string.h> 
  6 #include <ctype.h> 
  7  
  8 double funcvalnum (int tam); 
  9 char   *funcvalet (int n); 
 10 char  *funcvalfnume (int ampl); 
 11  
 12 void main (void) 
 13 { 
 14   textbackground(1); 
 15   textcolor(4); 
 16   clrscr(); 
 17  //  int a=getche();///pruebas de momento 
 18   double prueban; 
 19   char pruebalf[30]; 
 20   char pruebalfn[20]; 
 21  
 22   gotoxy(7,9);cout<<"digite un numero: "; 
 23   gotoxy(7,11);cout<<"Digite nombre: "; 
 24   gotoxy(7,13);cout<<"Cadena alfanumerica: "; 
 25   gotoxy(24,9);prueban=funcvalnum(5); 
 26   gotoxy(22,11);strcpy(pruebalf,funcvalet(30)); 
 27   gotoxy(28,13);strcpy(pruebalfn,funcvalfnume(7)); 
 28  
 29  
 30  
 31   cout<<endl<<endl<<pruebalfn;//<<prueban<<endl<<pruebalf<<endl<<pruebalfn; 
 32   getch(); 
 33 }///fin main 
 34  
 35  
 36  
 37  
 38 double funcvalnum (int tam) 
 39 { 
 40    /* funcvalnum 
 41      La siguiente funcion no es apta para todo publico puede contener 
 42      partes enredadas  se recomienda la supervicion de un adulto :-) 
 43    */ 
 44   char vnume[15], baux; 
 45   int pnume,posx,posy; 
 46   double numero; 
 47  
 48   posx=wherex(); posy=wherey(); 
 49  
 50   for(int i=0;i<tam;)///se llena el vector hasta donde debe ser no recibe + 
 51   {                  //caracteres de lo estipulado y hace la comparacion 
 52              //inmediatamente si es uan letra o numero 
 53  
 54     textbackground(1);///es igual q el crscr se mdoifican los colores 
 55     textcolor(4); 
 56     do{ 
 57     gotoxy(posx +i,posy);cout<<" "; 
 58        //gotoxy(3,18);clreol(); 
 59        gotoxy(posx +i,posy);baux=getche(); 
 60        pnume=(int) baux; 
 61     //cout<<endl<<pnume<<" "<<i; 
 62     //getch(); 
 63     }while ((i==0 && pnume==13) || (i!=0 && pnume==45));////por si me digitan un enter sin escribri nada 
 64  
 65      if( (pnume<48 || pnume>57) && (pnume!=13) && (pnume!=46 && pnume!=45)) 
 66      { 
 67       textcolor(7); 
 68       gotoxy(3,18);cout<<"[X] "; cprintf("Se ha digitado un caracter no valido"); 
 69       getch(); 
 70       gotoxy(posx +i,posy);cout<<" "; 
 71      } 
 72      else 
 73  
 74       if (pnume==13) 
 75     break; 
 76        else 
 77        { 
 78     vnume[i]=baux; 
 79     i++; 
 80        } 
 81  
 82   }//fin for 
 83       numero=atof(vnume); 
 84    return numero; 
 85  
 86 }//fin funcion que valida numeros 
 87  
 88  
 89 char  *funcvalet (int n) 
 90 { 
 91   char valfab[30], baux; 
 92   int pnume,posx,posy,comprobar; 
 93   double numero; 
 94  
 95   posx=wherex(); posy=wherey(); 
 96  
 97   for(int i=0;i<n;)///se llena el vector hasta donde debe ser no recibe + 
 98   {                  //caracteres de lo estipulado y hace la comparacion 
 99              //inmediatamente si es uan letra o numero 
100  
101     textbackground(1);///es igual q el crscr se mdoifican los colores 
102     textcolor(4); 
103     do{ 
104     gotoxy(3,18);delline(); 
105     gotoxy(posx +i,posy);baux=getche(); 
106     pnume=(int) baux; 
107  
108     }while((i==0 && pnume==13)|| (i==0 && pnume==32));////por si me digitan un enter sin escribri nada 
109  
110  
111     comprobar=isalpha(baux); 
112     if (comprobar==0 && pnume!=32 && pnume!=13) 
113     { 
114       textcolor(7); 
115       gotoxy(3,18);cout<<"[X] "; cprintf("Se ha digitado una caracter no valido"); 
116       getch(); 
117       gotoxy(posx +i,posy);cout<<" "; 
118     } 
119       else 
120     if(pnume==13) 
121     { 
122      break; 
123     } 
124      else 
125      { 
126       valfab[i]=baux; 
127       i++; 
128      } 
129  
130   }//fin for 
131    return valfab; 
132  
133 }///fin funcion q valida las letras 
134  
135 char  *funcvalfnume (int ampl)///porq tiene q se run puntero? 
136 { 
137  
138   char valfanu[30], baux; 
139   int pnume,posx,posy,comprobar; 
140   double numero; 
141  
142   posx=wherex(); posy=wherey(); 
143  
144   /*for(int j=0; j<ampl; j++)  ///por el probelma d eun solo digito 
145   valfanu[j]=' '; */ 
146  
147   for(int i=0;i<ampl;)///se llena el vector hasta donde debe ser no recibe + 
148   {                  //caracteres de lo estipulado y hace la comparacion 
149              //inmediatamente si es uan letra o numero 
150  
151     textbackground(1);///es igual q el crscr se mdoifican los colores 
152     textcolor(4); 
153     do{ 
154     gotoxy(3,18);delline(); 
155     gotoxy(posx +i,posy);baux=getche(); 
156     pnume=(int) baux; 
157  
158     }while((i==0 && pnume==13)|| (i==0 && pnume==32));////por si me digitan un enter sin escribri nada 
159  
160  
161     comprobar=isalnum(baux); 
162  
163        if(comprobar!=8 && comprobar!=2 && pnume!=32 && pnume!=13 && pnume!=46 && pnume!=35 && pnume!=64 && pnume!=45 && pnume!=95)//comprubea los caracteres (. # @ - _ ) 
164        { 
165  
166     textcolor(7); 
167     gotoxy(3,18);cout<<"[X] "; cprintf("Se ha digitado una caracter no valido"); 
168     getch(); 
169     gotoxy(posx +i,posy);cout<<" "; 
170  
171        } 
172     else 
173     if(pnume==13) 
174      { 
175       break; 
176      } 
177  
178      else 
179       { 
180        valfanu[i]=baux; 
181        i++; 
182       } 
183  }///fin for 
184  
185   return valfanu; 
186  
187 }///fin funcion valores alfanumericos

No hay comentarios:

Publicar un comentario