elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: ¿Como filtrar todo tipo de datos de entrada en un programa? en: 24 Noviembre 2018, 13:10 pm
Depende de lo que quieras filtrar.
Si quieres filtrar que cuando pides un número te introduzcan un número positivo claro que puedes con un filtro <do while> que es lo que se suele usar.
Sin embargo si quieres filtrar que una cadena de caracteres cumpla una condición o condiciones específicas pues tendrás que hacer más comprobaciones y lo mejor será crear una función que se encargue de eso ya que no existen funciones para todo lo que se puede hacer.

Lo que te ha mostrado AlbertoBSD sería una forma fácil de entender y segura de filtrar datos ya que usando <gets> te quitas de problemas con el buffer. Si lo quieres más simple todavía puedes hacer uso de <scanf> pero ten en cuenta que entonces puedes tener problemas de buffer.

Código
  1. int num;
  2. do{
  3.    printf("Introduce un numero positivo: ");
  4.    scanf("%d", &num);
  5. }   while(num < 0);

Ahí tienes un ejemplo de lo que sería un filtro para enteros positivos lo más simple que creo que puede hacerse.
Espero que te sirva de ayuda.

Ese tipo de filtros si sabía hacerlos, pero me gustaria hacer uno sencillo para todo carácter que no sea un número positivo. Por ejemplo, imagina que el usuario introduce una arroba, un guión o un símbolo de dollar. ¿Si se pudiese hacer de manera sencilla como lo haria?
2  Programación / Programación C/C++ / Re: ¿Como filtrar todo tipo de datos de entrada en un programa? en: 24 Noviembre 2018, 12:35 pm
La forma correcta de realizar esto es procesar todo como texto o cadena de carectares al momento de la entrada y procesar los tipos de datos directamente con las funciones apropias como strtol o strtof

Codigo para C

Código
  1. int dato_entero;
  2. float dato_flotante;
  3. char temp[10];
  4. //Capturamos variable_entera
  5. do {
  6. printf("Capture variable_entera: ");
  7. fgets(temp,10,stdin);
  8. dato_entero= strtol(temp,NULL,10); //Solo procesamos numeros BASE 10
  9.  
  10. /*En la funcion anterior se pude cambiar el NULL, por un apuntador y asi deteminar en que momento se para la funcion strtol, si el apuntador Apunta, a un '\n' significa que leyo hasta un Enter, si apunta a alguna letra o simbolo significa que trataron de ingresar caracteres distintos a los esperados*/
  11.  
  12. }while(dato_entero >= 0); // Salimos del DO solo si el valor leido es negativo
  13.  
  14.  
  15. do {
  16. printf("Capture variable_flotante: ");
  17. fgets(temp,10,stdin);
  18. dato_flotante= strtof(temp,NULL);
  19.  
  20. /*En la funcion anterior se pude cambiar el NULL, por un apuntador y asi deteminar en que momento se para la funcion strtol, si el apuntador Apunta, a un '\n' significa que leyo hasta un Enter, si apunta a alguna letra o simbolo significa que trataron de ingresar caracteres distintos a los esperados*/
  21.  
  22.  
  23.  
  24. }while(dato_flotante == 0.0); // Salimos del DO solo si el valor leido distinto de 0
  25.  

Para C++ deben de existir formas diferentes de procesarlos datos

¿No hay alguna forma de filtrar cualquier dato no deseado por teclado usando condicionales y bucles únicamente? Si se pudiese, ¿como lo haría?
3  Programación / Programación C/C++ / ¿Como filtrar todo tipo de datos de entrada en un programa? en: 24 Noviembre 2018, 03:41 am
Me gustaría saber como puedo filtrar distintos tipos de entrada en un programa...
Por ejemplo un programa en el que el usuario tenga que introducir uno o varios números y no se permitan caracteres alfabéticos, he pensado en hacerlo con un bucle que pregunte todo el rato la misma pregunta de ingreso de datos hasta que el usuario finalmente ingrese el tipo de caracter necesario, pero no se hacerlo...  :-\
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines