• Sábado 14 de Diciembre de 2024, 17:48

Autor Tema:  Analisis De Codigo  (Leído 1392 veces)

cluster

  • Miembro MUY activo
  • ***
  • Mensajes: 196
    • Ver Perfil
Analisis De Codigo
« en: Jueves 16 de Agosto de 2007, 18:40 »
0
Hola compañeros de solo codigo, me podrian colaborar con una duda que tengo sobre de la siguiente pregunta.

dado el programa

x=M;
y=N;
z=0;
/* Inv P:? */
while (x>=y){
z=z+1;
x=x-y;
}

cual de las siguientes condiciones puede remplazar la interrogacion en P para que la asercion sea un invariante para el ciclo?

A.) z-y+x == M+N
B.) zx+y == N
C.) z+zy+x == M
D.) zy+x == M
E.) xy+z == MN

cual seria su respuesta.


si me pudieran colaborar con una explicacion se los agradeceria.

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Re: Analisis De Codigo
« Respuesta #1 en: Viernes 17 de Agosto de 2007, 07:33 »
0
Hola cluster,

YO diría que es la D:
Código: Text
  1.  
  2. zy + x = M
  3.  
  4.  

Te explico. Si te das cuenta, en cada iteración del bucle while, decrementas x ( que vale M ) de N en N ( que es Y ) y sumas uno en Z. Supongamos entonces cero iteraciones:
z = 0, x = M, y = N, con lo que z*y + x = M, se cumple. Supongamos ahora una iteracion:
z = 1, x = M - N, y = N, con lo que z*y+x = 1 * N + ( M - N ) = N + M - N = M.
Supongamos dos iteraciones: z = 2, x = M - 2N, y = N. --> z*y + x = 2*N + ( M - 2N ) = 2N + M - 2N = M, y así sucesivamente.

Espero que te sirva, si no es, para encontrar la respuesta.

Saludos!

cluster

  • Miembro MUY activo
  • ***
  • Mensajes: 196
    • Ver Perfil
Re: Analisis De Codigo
« Respuesta #2 en: Viernes 17 de Agosto de 2007, 17:54 »
0
gracias Ithilien por la explicacion aunque no tengo la respuesta, creo que si es la D ya que estoy resolviendo otros problemas parecidos con respuesta aplicado lo que me explicaste y me da.

saludos  :suerte: