Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ciclo while

Estas en el tema de Ciclo while en el foro de C/C++ en Foros del Web. Hola buen día, tengo un problema con el bucle "while" esque no sé usarlo En el siguiente programa no sé como hacer para que despues ...
  #1 (permalink)  
Antiguo 25/05/2014, 20:09
 
Fecha de Ingreso: mayo-2014
Mensajes: 1
Antigüedad: 10 años
Puntos: 0
Pregunta Ciclo while

Hola buen día, tengo un problema con el bucle "while" esque no sé usarlo
En el siguiente programa no sé como hacer para que despues de terminar lo que tiene que hacer se repita sin cerrarse. Soy un estudiante y mi profesor no explica muy bien que digamos asi que espero que me ayuden, gracias :D
Por cierto utilizo el Microsoft visual C++
#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{
int Hora, Dia, Semana, Mes, Año;
cout <<"Ingrese su salario por hora:"endl;
cin >> Hora;
Dia = Hora * 8
Semana = Dia * 6
Mes = Semana * 4
Año = Mes * 12
cout << "Su salario por dia es: " << Dia << endl;
cout << "Su salario por semana es: " << Semana << endl;
cout << "Su salario por mes es: " << Mes << endl;
cout << "Su ssalario anual es: " << Año << endl;
system("Pause");
}
  #2 (permalink)  
Antiguo 25/05/2014, 23:33
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Ciclo while

Bien venido al foro.
Para poner código usa las etiquetas el resaltado de sintaxis( HighLight )
Primero voy a comentar algunos errores que veo, después te voy a sugerir algunos cambios.
Algunas lineas falta en punto y coma:
Dia = Hora * 8
Semana = Dia * 6
Mes = Semana * 4
Año = Mes * 12

Debes evitar hacer llamadas al sistema, "Solo" la debes usar si es necesario, puedes cambiar system("Pause"); por cin.ignore(); que hace parte de la la libreria iostream y así no te hace falta incluir windows.h para eso. ¿La rason?¡Simples, algunas funciones de sistema no son compatible entre windows y linux, y por razones que estas dependiendo del sistema para hacer la pausa, cosa que puedes hacer con cualquier sentencia que pause un memento el programa, hasta un simple cin>> con una variable muerta es mejor!

int fin = 0;

cin>>fin;

Al llegar al cin va pausar igual que el pause y no te va hacer falta incluir todo el windows .h XD

Ahora vamos con lo de while().
while() al igual que if() do-while() y otros necesita una condición verdadera
¿Que podemos usar como verdadero?¡El 1 por ejemplo!
Podemos usar como verdadero cualquier numero que no sea 0 (cero) hasta -1 es verdadero, y cualquier numero negativo.
También podemos usar el resultado de hacer una expresión que nos de un verdadero. Ejemplo:
int num1 = 10;
int num2 = 10;

si hacemos:

while (num1 == num2) ¿que dará?¡Verdadero por que ambos son 10!

pero realmente para que un bucle no se corte nunca es solo hacer:
while(1)

Así de simple, se quedará toda la vida en un bucle eterno.Eso es un problema ya que es mas bien un bug ;)

pero y si hacemos una cosa.... ^^

int num = 1;

while(num)

¿Es lo mismo no?¡ Pues no!
Ahora puedo cambiar el resultado a num dentro del bucle.
Imagines que estas delante de morfeo en la película de matrix (que quede claro que el ejemplo no es mio XD).
Pero si te encuentras delante de morpheo que te ofrece la pastilla roja y la pastilla azul. La roja te lleva a matrix y no te va gustar lo que ves y la azul te lleva a la cama XD
Prefiero la azul XDDDD
¿Y si...preferimos la azul? ¡Entonces morpheo se pone en plan pesao y diga cada vez que elegimos la azul...¿Seguro quieres la azul? XDDD
Solo podemos seguir la película si elegimos la roja o la película terminaría ahí XDD
Pues bien hagamos el bucle de morpheo XDDD

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5.    
  6.     int bucle = 1;      //Variable que usaremos para el bucle.
  7.     int pastilla = 0;   //No hay pastilla aun ;)
  8.    
  9.     cout << "Elige pastilla roja o pastilla azul.Si eliges roja yo te enseñare hasta donde llega la";  
  10.     cout << " madriguera del conejo, pero si elijes la pastilla azul despertaras en la cama y creeras lo que quieras creer" << endl;
  11.    
  12.     cout << "1-Roja\n2-Azul" << endl;
  13.     cin>>pastilla;
  14.    
  15.     while( bucle ){
  16.        
  17.         if( pastilla == 1 ){
  18.             cout << " ¡Has elegido pastilla Roja!Ahora vas a ver con tus ojos que es Matrix ;)" << endl;
  19.             break; //Si elegimos la 1 caímos aquí lo que hace que se rompa el bucle, es una de las formas de romper
  20.         }else{
  21.             cout << "¿Seguro que vas elegir la azul, no es mejor la rojaXD?" << endl;
  22.             cout << "1-Roja\n2-Azul" << endl;
  23.             cin >> pastilla;
  24.         }
  25.     }
  26.    
  27.     cin.ignore(); //igual que system ("pause");  
  28. }

2ºforma
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5.  
  6.  
  7.     int pastilla = 2;
  8.    
  9.     cout << "Elige pastilla roja o pastilla azul.Si eliges roja yo te enseñare hasta donde llega la";
  10.     cout << " madriguera del conejo, pero si elijes la pastilla azul despertaras en la cama y creeras lo que quieras creer" << endl;
  11.    
  12.     cout << "1-Roja\n2-Azul" << endl;
  13.     cin >> pastilla;
  14.    
  15.     //Solo entramos en el bucle en caso elegimos pastilla azul 2 y morpheo se pone borde XD
  16.     if ( pastilla == 2 ) {
  17.         //2º forma usare la propia pastilla para el bucle XD
  18.         while ( pastilla ) {
  19.        
  20.             if ( pastilla == 2 ) {
  21.                 cout << "Seguro que vas elegir la azul, no es mejor la rojaXD?" << endl;
  22.                 cout << "1-Roja\n2-Azul" << endl;
  23.                 cin >> pastilla;   //si aquí elegimos 1 entramos en el if de abajo
  24.                
  25.                 if ( pastilla == 1 ) {
  26.                     pastilla = 0;   //y como elegimos 1 debemos salir haciendo que pastilla sea 0 para romper el bucle
  27.                 }
  28.             }//if
  29.         }//bucle
  30.     }//if
  31.    
  32.     cout << "Has elegido pastilla Roja!Ahora vas a ver con tus ojos que es Matrix ;)" << endl;
  33.     cin.ignore(); //igual que system ("pause");
  34. }

Como ves hay mas de una forma...Yo diría que hay muchas formas de hacer un bucle.
Solo piensa que while necesita un "verdadero", ya sea por un valor directo o bien por una expresión.
Las formas de pararlo quedan a tu gusto, puedes usar un break que lo rompa, usar una variable falsa para salir, o el resultado de una expresión que te de un valor falso.

Etiquetas: int, programa, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:18.