PUERTA | PUERTA-CS-2006 | Pregunta 60

Considere el siguiente segmento de código C.

for (i = 0, i<n; i++)
{
    for (j=0; j<n; j++)
    {
        if (i%2)
        {
            x += (4*j + 5*i);
            y += (7 + 4*j);
        }
    }
}

¿Cuál de las siguientes es falsa?
(A) El código contiene cálculo invariable de bucle
(B) Hay un alcance de eliminación de subexpresiones comunes en este código
(C) Hay un alcance de reducción de fuerza en este código
(D) Hay un alcance de eliminación de código muerto en este código

Respuesta : (D)
Explicación: La pregunta se refiere a una afirmación falsa


4*j is common subexpression elimination so B is true.

5*i can be moved out of inner loop so can be i%2. 
Means, A is true as we have loop invariant computation.

Next, 4*j as well as 5*i can be replaced with a = - 4;
before j loop then a = a + 4; where 4*j is computed,
likewise for 5*i. C is true as there is scope of strength 
reduction. 

By choice elimination, we have D.

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *