Jerarquización sentencias if en c ++

En C ++, las llaves de un si o un otro cláusula puede contener otro si comunicado. Estos son conocidos como anidado si declaraciones. El seguimiento NestedIf programa muestra un ejemplo de un anidada si declaración en uso.

// NestedIf - demuestran una if anidado // # incluyen #include #include using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// indique su nacimiento yearint Nyear-cout lt; lt; "Escriba su año de nacimiento:" cin >> Nyear - // Hacer determinación de centuryif (Nyear> 2000) {cout lt; lt; "Usted nació en el siglo 21" lt; lt; endl-} else {cout lt; lt; "Naciste en" -si (Nyear lt; 1950) {cout lt; lt; "la primera mitad" -} else {cout lt; lt; "la segunda mitad" -} cout lt; lt; Lt "del siglo 20"; lt; endl -} // espera hasta que el usuario está listo antes de finalizar el programa // para que el usuario pueda ver el resultscout programa lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - volver 0-}

Este programa comienza pidiendo el año de nacimiento del usuario. Si el año del nacimiento es posterior a 2000, el programa emite la cadena "Usted nació en el siglo 21".

En términos matemáticos precisos, el año 2000 pertenece al siglo 20, no 21.

Si el año de nacimiento no es mayor que 2000, entonces el programa entra en el otro cláusula del exterior si comunicado. Esta cláusula se inicia mediante la salida de la cadena de "Naciste en" antes de comparar el año de nacimiento de 1950.

Si el año del nacimiento es menos de 1.950, entonces el programa añade la primera "la primera mitad". Si el año de nacimiento no es menor que 1950, entonces la otro cláusula del interior si sentencia se ejecuta, que vira en la frase "la segunda mitad". Por último, el programa añade la frase final "del siglo 20a" a lo que ha sido la producción hasta el momento.

En la práctica, la salida del programa aparece como sigue para los tres valores posibles para año del nacimiento. En primer lugar, 2002 produce lo siguiente:

Ingrese su año de nacimiento: 2002Usted nació en el centuryPress 21 Intro para continuar. . .

Por ejemplo, 1956 genera el siguiente:

Ingrese su año de nacimiento: 1956You nacieron en la segunda mitad del vigésimo centuryPress Intro para continuar. . .

Por último, el año de nacimiento de 1932 genera la tercera posibilidad:

Ingrese su año de nacimiento: 1932You nacieron en la primera mitad del vigésimo centuryPress Intro para continuar. . .

Se puede usar un anidada si para evitar las comparaciones innecesarias en el NestedBranchDemo programa:

si (nOperand1> nOperand2) {cout lt; lt; "Argumento 1 es mayor que el argumento 2" lt; lt; endl-} else {if (nOperand1 lt; nOperand2) {cout lt; lt; "Argumento 1 es menor que el argumento 2" lt; lt; endl-} else {cout lt; lt; "Argumento 1 es igual al argumento 2" lt; lt; endl-}}

Esta versión lleva a cabo la primera comparación al igual que antes. Si nOperand1 es mayor que nOperand2, este fragmento emite la cadena "Argumento 1 es mayor que el argumento 2". A partir de aquí, sin embargo, el control salta a la abrazadera cerrada final, saltándose así las comparaciones restantes.

Si nOperand1 no es mayor que nOperand2, a continuación, el fragmento realiza una segunda prueba para diferenciar el caso de que nOperand1 es menos que nOperand2 del caso que son iguales en valor.

La figura muestra gráficamente el flujo de control para la NestedBranchDemo programa para la entrada de 5 y 10.

imagen0.jpg

Realización de la prueba por la igualdad es innecesaria: Si nOperand1 no es ni más ni menos que de nOperand2, entonces debe ser igual.




» » » » Jerarquización sentencias if en c ++