Segundo parcial Nov 2022 ejercicio 3

Re: Segundo parcial Nov 2022 ejercicio 3

de Luis Sierra -
Número de respuestas: 0
hola virginia,

hay al menos tres cosas en tu correo.

1. el código que propones. no puede funcionar correctamente porque el dígito que consideras al acumular es siempre el mismo, lista^.bin. si lista se modificara, entonces podría recorrer todos los dígitos. tu modificas p, pero usas lista, y esto me lleva a ...

2. para recorrer la lista puedes hacer lo que propusiste; crear una variable auxiliar de tipo lista y recorrerla. la solución propuesta usa otro enfoque; como el parámetro formal lista es pasado por copia los cambios que se hagan a lista no afectan al parámetro real usado en la invocación. es esencial que el parámetro formal no está pasado por referencia VAR, como sucede en este caso. finalmente, ...

3. tu programa, aunque usara p en lugar de lista al acumular, está mal, porque no toma en cuenta el último dígito. terminas la iteración cuando p^.sig es nil, pero no acumulas el valor en p^.bin cuando p^.sig. puedes ejecutar a mano tu programa y verás que si la lista de entrada fuera [1,1], te devolverá el valor 1 y no 3. y mucho más grave, si la lista es vacía, en vez de devolver cero, tu programa dará un error de ejecución.

saludos

luis