Autor
|
Tema: Validación de datos con Do while y condicionales en función C++ (Leído 4,464 veces)
|
SojatDotar
Desconectado
Mensajes: 40
|
Buenas, quieor implementar una función que dados 4 datos, validar que esten ingresados correctamente y en caso contrario que los vuelva a pedir, lo hice con un do while pero no funciona como quería, si podrían ver que hice mal por favor #include <iostream> using name space std;
int verificacion (int a, int b, int c, int d ){ int n2=0;
do { //ciclo que se repite mientras los datos suministrados esten malos //cuando sean validos los datos se sale //correcto b>a y d>c cout<<"suministre a"<<endl; cin>>a; cout<<"suministre b"<<endl; cin>>b; cout<<"suministre c"<<endl; cin>>c; cout<<"suministre d"<<endl; cin>>d; cout<<" Vuelva a suministrar los datos"<<endl; } while (a>b and c>d)
if (n2==0){ // si los datos son erroneos que la funcion retorne el siguiente mensaje cout<<"datos suministrados erroneos"<<endl; return n2; n2++ }
else { // en otro caso que retorne este mensaje cout<<"Datos suministrado correctos"<<endl; return n2; }
}
int main () { int a,b,c,d,n1;
n1=verificacion(a,b,c,d); cout<<"Los datos son :"<<n1<<endl;
}
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Muy buenas.
Pues bien, hay varias cosas que te fallan en el código, a saber:
1. Llamas a la función con los argumentos a, b, c y d; pero dentro de ella les das unos valores nuevos que, por otra parte, son locales de la función, no podrás saber que has guardado fuera de ella. Por tanto: 1.1. Llama a la función sin argumentos y declaras dentro de ella las cuatro variables. O 1.2. Haz que los argumentos sean punteros o referencias, entonces los valores que les des dentro de la función serán los que verás en esas mismas variables cuándo ésta regrese.
2. Dentro de la función la lógica está mal planteada: después de pedir las variables hay una cadena que pide al usuario que vuelva a introducir los datos, estén estos bien o no. Eso debería formar parte de la parte del tratamiento de error. Puedes: 2.1. Usar un if para saber si los datos introducidos son correctos, lo que tienes dentro de while. Si falla pon n2 e informa al usuario de que ha habido un fallo. Dentro del while mira si n2==0 para repetir el bucle en caso afirmativo.
3. Regresas un dato con n2 al término de la función pero, contrariamente a tu planteamiento, a juzgar por el código de main, n2 no regresa los cuatro números sino que siempre te retornará 0. Por otra parte una vez que has hecho que una función devuelva el control con return todo código que haya escrito después de esta instrucción es código que no se va a ejecutar. Puedes: 3.1. Hacer que la instrucción no devuelva nada y, junto a lo dicho en el punto 1.2. la función main recibirá los resultados en la variables usadas como argumentos de llamada. O 3.2. Hacer que la función devuelva un puntero a entero y llamarla sin argumentos. Mediante la memoria dinámica creas un array que llenarás con los cuatro números y eso será lo que devolverá la función. En main recogerás ese puntero a una variable puntero local.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
validacion de datos
Programación Visual Basic
|
tony12
|
1
|
1,830
|
18 Febrero 2006, 19:08 pm
por zhidow
|
|
|
[mod] validación de tipos de datos en un formulario
Java
|
Azulf
|
6
|
6,558
|
7 Junio 2007, 15:23 pm
por »~^~«CkNU!»~^~«
|
|
|
Ayuda en la validación de entrada de datos en C++
Programación C/C++
|
theluigy13etv
|
7
|
9,829
|
30 Junio 2011, 06:51 am
por leogtz
|
|
|
Ayuda! Validacion de Datos en Ordenamiento.
Programación C/C++
|
BKsiragon
|
9
|
3,441
|
2 Febrero 2013, 21:30 pm
por leosansan
|
|
|
ayuda con una validacion de solo numeros con la funcion isdigit
Programación General
|
geshiro
|
1
|
2,101
|
12 Agosto 2015, 05:32 am
por engel lex
|
|