Duda bucle do while

Iniciado por program_10, 11 Enero 2015, 00:12 AM

0 Miembros y 1 Visitante están viendo este tema.

Yoel Alejandro

#10
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 (cpp) [Seleccionar]

#include <iostream>

using namespace std;

int lector_de_enteros();
int lector_de_opciones( int );

int main () {

int numero;
int maximo = 4;

numero = lector_de_opciones( maximo );
cout << endl << " Numero fue: " << numero << endl;

return 0;
}

int lector_de_enteros()
{
int numero = 0;
cin >> numero;
return numero;
}

int lector_de_opciones(int valor_maximo)
{
int valor_elegido = 0;

cout << " Introduce un numero entre 1 y " << valor_maximo << ": ";
valor_elegido = lector_de_enteros();

while ( valor_elegido < 1 || valor_elegido > valor_maximo ) {   // <-- correci'on aqu'i
{
cout << endl << "Vuelve a introducir un numero que este dentro del rango, por favor: ";
valor_elegido = lector_de_enteros();     // <-- correccion
}
}

return valor_elegido;       // <-- mover a este lugar
}


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


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
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)