UTNianos

Versión completa: Do while...dudas de uso
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola a todos

Tengo una duda referente al Do While, no puedo entender porque no funciona el siguiente codigo y creo que esta mal aplicada la idea del Do While:


//Escribe un programa que valide el ingreso de un número entero positivo. Si el número es negativo o
//cero, el programa debe solicitar el reingreso hasta que el número ingresado sea válido.
#include <iostream>
using namespace std;
int main (){
int numero;
cout << "Ingresar el numero"<<endl;
cin >> numero;
do {
cout<< "Debes ingresar un numero valido"<<endl;
cin >> numero;
}
while (numero<1);
cout <<"El numero ingresado es valido"<<endl;
return 0;
}



Mirando mi codigo interpreto que:
Al leerse el Do automaticamente pasa abajo y lee el condicional While, en caso de cumplirse ejecuta lo del Do y en caso que no se cumplia sigue con lo ubicado debajo del While.

Estoy equivocado? En caso que si, tienen alguna otra manera de explicarme el uso del Do While?
[/code]
Desde ya muchas gracias
Si no me equivoco, el do while se ejecuta aunque sea una sola vez. Es decir, primero ejecuta lo que esta despues del do, despues comprueba la condicion. Si es verdadera sigue ejecutandose. Si es falsa sale del while
Edit: Esta mal porque al principio pedis 2 veces que se ingrese un número, y seguramente ahí se te trababa.
Siempre se ejecuta lo que está dentro del do, luego analiza la condición del while. Si la condición es verdadera, entonces se vuelve al do.
Caso contrario continúa.
PD: ojo que el programa no va a andar correctamente si el usuario ingresara 1.

Edit: si quisieras conservar esa estructura, deberías cambiar el do-while por un while(numero <= 1)
Sino borra las líneas 7 y 8 y también debería funcionar
Perfecto ahora comprendo el do while.
Esto significa que lo podemos usar principalmente para un contador y que al llegar a cierto valor (sumando) salga del do while.
Hay otros ejemplos practicos?
Su uso, es para cuando vos necesitas que se corra al menos una vez.

Sinceramente el "do..while" no lo vas a usar mucho, ya que poniendo cierta condición en el "while" lo podes hacer funcionar igual que el otro.

Por ejemplo, en tu ejercicio podes hacerlo asi:


int main (){
int numero;

do {
cout<< "Ingrese un valor positivo."<<endl;
cin >> numero;
}
while (numero<1);

cout<< "Usted ingreso un valor correcto."<<endl;
return 0;
}


Se ejecuta 1 vez solicitando el valor, si es negativo o 0, vuelve a solicitar el valor. sale del ciclo cuando es mayor a 1.
el do a mi gusto es un dibujo, no es necesario en el algoritmo (es mas, es medio inutil la mayoria del tiempo xq siempre tenes la opcion de no usarlo), solo con el while y un cout al salir era suficiente

int main (){
int numero;
cout<< "Ingrese un valor positivo."<<endl;
cin >> numero;
while (numero<1);{
cout<< "Ingrese un valor positivo."<<endl;
cin >> numero; }
cout<< "Usted ingreso un valor correcto."<<endl;
return 0;}
}
URLs de referencia