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