PUERTA | GATE-CS-2017 (Conjunto 2) | Pregunta 38

Considere el siguiente fragmento de programa en C que está destinado a dividir x entre y usando restas repetidas. Las variables x, y, q y r son números enteros sin signo.

while(r >= y)
{
r = r - y;
q = q + 1;
}

¿Cuál de las siguientes condiciones sobre las variables x, y, q y r antes de la ejecución del fragmento asegurará que el ciclo termine en un estado que satisfaga la condición x == (y*q + r)?
(A) ( q == r ) && ( r == 0)
(B) ( x > 0 ) && ( r == x ) && ( y > 0 )
(C) ( q == 0 ) && ( r = = x ) && ( y > 0 )
(D) ( q == 0 ) && ( y > 0 )

Respuesta: (C)
Explicación: x == ( y * q + r )
x= producto, y= multiplicando, q = cociente, r = resto

  • Para que termine el ciclo, el cociente debe ser 0, por lo que solo quedan las opciones C y D
  • Si q=0 -> r=x debería aplicarse

Por lo tanto, la opción C es la prueba más apropiada
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 *