Anidación si las declaraciones en c ++

En C ++, los tirantes de una Si o un más cláusula puede contener otro Si declaración. Estos son conocidos como anidado Si declaraciones. El seguimiento NestedIf programa muestra un ejemplo de un anidado Si declaración en uso.

Video: 11 - Estructura Condicional if Múltiple o Anidada (ProgC)

// NestedIf - demuestran una if anidado // # incluyen #incluir #incluir using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// indique su nacimiento yearint nYear-cout lt; lt; "Introduzca su año de nacimiento: "-cin gt; gt; nYear - // Realizar la determinación de centuryif (nYear gt; 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; " del siglo 20"lt; lt; endl -} // espera hasta que el usuario esté listo antes de finalizar el programa // para permitir al usuario ver el programa resultscout lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, `n`) - cin.get () - volver 0-}

Este programa se inicia solicitando el año de nacimiento del usuario. Si el año de nacimiento es posterior a 2000, el programa muestra la cadena “Usted nació en el siglo 21”.

Video: C++ - Expresiones Booleanas 2 (AND)

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

Si el año de nacimiento no es mayor que 2000, entonces el programa entra en el más cláusula del exterior Si declaración. Esta cláusula se inicia mediante la salida de la cadena “Naciste en” antes de comparar el año de nacimiento de 1950.

Si el año de nacimiento es menor que 1950, entonces el programa añade el primer "la primera mitad". Si el año de nacimiento no es menor que 1950, entonces el más cláusula del interior Si se ejecuta declaración, que vira en la frase "la segunda mitad". Por último, el programa añade la frase final “Del siglo 20” a lo que ha sido hasta el momento de salida.

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

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

Por ejemplo, 1956 genera los siguientes:

Introduzca su año de nacimiento: 1956You nacieron en la segunda mitad de los 20 centuryPress Intro para continuar. . .

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

Introduzca su año de nacimiento: 1932You nacieron en la primera mitad de los 20 centuryPress Intro para continuar. . .

Se puede usar un anidado Si para evitar las comparaciones innecesarias en el NestedBranchDemo programa:

si (nOperand1 gt; 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 muestra la cadena “Argumento 1 es mayor que el argumento 2”. A partir de aquí, sin embargo, el control salta a la abrazadera cerrada final, omitiendo con ello 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 de 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.

Realización de la prueba por la igualdad es innecesaria: si nOperand1 no es ni mayor ni menos que de lo nOperand2, entonces debe ser igual.

Artículos Relacionados