ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Validacion De Datos


Enviado por   •  25 de Abril de 2015  •  1.053 Palabras (5 Páginas)  •  260 Visitas

Página 1 de 5

Validación de tipos de datos en C++

Por esutoraiki el 29 de Noviembre de 2010 con 24,385 visitas

Tecnologia y otros Otros tutoriales por esutoraiki.

Estaba aprendiendo un poco de C++ cuando decidí armar un programa que creara gráficos de tortuga. Al empezar a desarrollarlo arme un menú para acceder a las opciones de manera numérica y me tropecé con el problema de validar que el dato introducido fuera de tipo numérico.

Indagando un poco por Internet lo primero que me encontré fue una función para validar la introducción de dígitos: isdigit de la librería ctype.h ó cctype. El problema con dicha función es que, aunque valida el tipo, solo lo hace en caso de ser un dígito, pero no en el caso de ser un número con más de 1 solo dígito.

Leyendo un poco, encontré que tal vez el problema se podía resolver utilizando aritmética binaria y manejo de bits de error de la librería iostream. Encontré este tutorial: Controles de flujo (Parte 2). El tutorial me pareció muy adecuado, pero al probarlo note que era necesario realizar dos Enter para que funcionara de manera adecuada.

El problema del Enter surge por la instrucción:

Código :

cin.ignore(1024, '\n');

Aparte de dicho problema, esta instrucción y está comparación me parecieron un poco alocadas para este problema:

Código :

estado = cin.rdstate();

if ((estado & ios::failbit) == ios::failbit)

Me pareció que la mejor manera de solucionarlo era a partir del funcionamiento de los flujos en c++.

Decidí por mi cuenta investigar un poco más y encontré el manejo de estado de error de flujo. Obteniendo como resultado el siguiente código:

Validar datos entrados por el usuario en C++

Código :

/* Validación de tipos de datos sin usar aritmética binaria en c++

Autor: John Sánchez Alvarez

Este código es libre de usar y modificarse*/

#include <iostream>

using namespace std;

int main (){

int numero, cont = 0;

bool continuar;

do {

continuar = false;

cin.clear();

if(cont > 0) cin.ignore(1024, '\n');

cout << "Introduce un numero: ";

cin >> numero;

cont++;

if(cin.fail() && cin.rdstate()){

cout << "NO ES UN NUMERO" << endl;

continuar = true;

}

} while (continuar);

}

Lo intentaré explicar lo más detalladamente posible.

Para poder hacer la comprobación efectivamente es necesario el uso de la librería iostream. El estado de flujo se puede comprobar por medio de los bits de la clase ios. La cual es la clase base de istream, ostream e iostream, estás son las más utilizadas para el flujo de Entrada y Salida en C++.

La instrucción cin.clear(); borra y establece el flujo a goodbit; Cuando se establece gootbit todos los flags de error son limpiados.

La instrucción cin.ignore(1024, '\n') Ignorar hasta 1024 caractéres introducidos hasta encontrar un ENTER o viceversa, lo que primero ocurra.

La instrucción cin.fail() retorna true si una operación de flujo a fallado y es posiblie realizar una recuperación de esos errores.

La instrucción cin.rdstate() retorna true si el estado de flujo es correcto.

qué es validar datos en programación en C++?

Tengo un cuestionario... y con que me encaminen sobre como debo responder les doi 5 estrellitas Investigar cómo deben validarse datos en los casos siguientes: - Cuando se trata de ingresar un carácter y se digita un número - Cuando debe ingresarse un número

...

Descargar como (para miembros actualizados) txt (6 Kb)
Leer 4 páginas más »
Disponible sólo en Clubensayos.com