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#include <iostream>
using namespace std;
int main() {
int bucle = 1; //Variable que usaremos para el bucle.
int pastilla = 0; //No hay pastilla aun ;)
cout << "Elige pastilla roja o pastilla azul.Si eliges roja yo te enseñare hasta donde llega la";
cout << " madriguera del conejo, pero si elijes la pastilla azul despertaras en la cama y creeras lo que quieras creer" << endl;
cout << "1-Roja\n2-Azul" << endl;
cin>>pastilla;
while( bucle ){
if( pastilla == 1 ){
cout << " ¡Has elegido pastilla Roja!Ahora vas a ver con tus ojos que es Matrix ;)" << endl;
break; //Si elegimos la 1 caímos aquí lo que hace que se rompa el bucle, es una de las formas de romper
}else{
cout << "¿Seguro que vas elegir la azul, no es mejor la rojaXD?" << endl;
cout << "1-Roja\n2-Azul" << endl;
cin >> pastilla;
}
}
cin.ignore(); //igual que system ("pause");
}
2ºforma
Código C++:
Ver original#include <iostream>
using namespace std;
int main() {
int pastilla = 2;
cout << "Elige pastilla roja o pastilla azul.Si eliges roja yo te enseñare hasta donde llega la";
cout << " madriguera del conejo, pero si elijes la pastilla azul despertaras en la cama y creeras lo que quieras creer" << endl;
cout << "1-Roja\n2-Azul" << endl;
cin >> pastilla;
//Solo entramos en el bucle en caso elegimos pastilla azul 2 y morpheo se pone borde XD
if ( pastilla == 2 ) {
//2º forma usare la propia pastilla para el bucle XD
while ( pastilla ) {
if ( pastilla == 2 ) {
cout << "Seguro que vas elegir la azul, no es mejor la rojaXD?" << endl;
cout << "1-Roja\n2-Azul" << endl;
cin >> pastilla; //si aquí elegimos 1 entramos en el if de abajo
if ( pastilla == 1 ) {
pastilla = 0; //y como elegimos 1 debemos salir haciendo que pastilla sea 0 para romper el bucle
}
}//if
}//bucle
}//if
cout << "Has elegido pastilla Roja!Ahora vas a ver con tus ojos que es Matrix ;)" << endl;
cin.ignore(); //igual que system ("pause");
}
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.