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)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda bucle do while
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Duda bucle do while  (Leído 4,018 veces)
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: Duda bucle do while
« Respuesta #10 en: 11 Enero 2015, 17:11 pm »

Acabo de revisar, el error está en la ubicación del return, que lo haces dentro del while. Si el while no se ejecuta, entonces la instrucción return tampoco, por lo que función devuelve un valor por defecto 0.

La solución está en colocar el return fuera del while

Con la correción, aquí el programa que compuse para la prueba:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int lector_de_enteros();
  6. int lector_de_opciones( int );
  7.  
  8. int main () {
  9.  
  10. int numero;
  11. int maximo = 4;
  12.  
  13. numero = lector_de_opciones( maximo );
  14. cout << endl << " Numero fue: " << numero << endl;
  15.  
  16. return 0;
  17. }
  18.  
  19. int lector_de_enteros()
  20. {
  21. int numero = 0;
  22. cin >> numero;
  23. return numero;
  24. }
  25.  
  26. int lector_de_opciones(int valor_maximo)
  27. {
  28. int valor_elegido = 0;
  29.  
  30. cout << " Introduce un numero entre 1 y " << valor_maximo << ": ";
  31. valor_elegido = lector_de_enteros();
  32.  
  33. while ( valor_elegido < 1 || valor_elegido > valor_maximo ) {   // <-- correci'on aqu'i
  34. {
  35. cout << endl << "Vuelve a introducir un numero que este dentro del rango, por favor: ";
  36. valor_elegido = lector_de_enteros();     // <-- correccion
  37. }
  38. }
  39.  
  40. return valor_elegido;       // <-- mover a este lugar
  41. }

y parece funcionar bien (pruébalo tú y me dices:)

Código:
yoel@yoel-pc:~/Documentos/C/test$ ./test
 Introduce un numero entre 1 y 4: 2

 Numero fue: 2
yoel@yoel-pc:~/Documentos/C/test$ ./test
 Introduce un numero entre 1 y 4: 1

 Numero fue: 1
yoel@yoel-pc:~/Documentos/C/test$ ./test
 Introduce un numero entre 1 y 4: 4

 Numero fue: 4
yoel@yoel-pc:~/Documentos/C/test$ ./test
 Introduce un numero entre 1 y 4: 0

Vuelve a introducir un numero que este dentro del rango, por favor: 2

 Numero fue: 2


« Última modificación: 11 Enero 2015, 17:45 pm por yoel_alejandro » En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda (Parar bucle con dato boolean) [bucle while]
Java
Dem0ny 5 18,237 Último mensaje 17 Diciembre 2008, 17:43 pm
por Dem0ny
duda con bucle for
Java
andaluz 1 2,306 Último mensaje 4 Mayo 2010, 22:35 pm
por Chuidiang
Duda bucle do...while
PHP
elkiy 2 1,958 Último mensaje 22 Febrero 2013, 15:17 pm
por elkiy
Duda C# Bucle While.
.NET (C#, VB.NET, ASP)
FKT 5 2,271 Último mensaje 18 Agosto 2015, 16:05 pm
por FKT
MOVIDO: Duda C# Bucle While.
Programación C/C++
Eternal Idol 0 1,209 Último mensaje 18 Agosto 2015, 11:36 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines