Problema 2 examen febrero 2023

Problema 2 examen febrero 2023

de Virginia Andrea Alonzo Perez -
Número de respuestas: 2

Hola
Lo que no entiendo en esta solucion que en octave funciona es por ejemplo en el vector vin=[2 3 4 5] la respuesta correcta es 3 y octave da 3 pero cuando lo haces a mano te quedaria 2 porque en el while te queda sumaizq= a sumader entonces no entraria. Adjunto foto de lo hecho a mano. 
function i = corteVec(vin)
 n = length(vin);
 sumaDer = 0;
 for j = 2:n
 sumaDer = sumaDer + vin(j);
 end
 i = 1;
 sumaIzq = 0;
 while i <= n && sumaIzq < sumaDer
 sumaIzq = sumaIzq + vin(i);
 sumaDer = sumaDer - vin(i+1);
 i = i + 1;
 end
end
muchas gracias 
Adjunto febrero 2023 problema 2.jpg
En respuesta a Virginia Andrea Alonzo Perez

Re: Problema 2 examen febrero 2023

de Eduardo Fernandez -

Según la letra, si v(i) es solución, entonces la suma de lo que está a la izquierda es mayor que la suma de lo que está a la derecha 

sumaIzq > sumaDer  

y entonces, en el ejemplo [ 2 3 4 5] la solución i==3 no puede ser porque, como vos decís,  2+3 == 5, y entonces eso no es lo que se espera, se espera que la suma de lo que está a la izquierda sea mayor que la suma de lo que está a la derecha.

La solución correcta es i==4 porque 2+3+4 > 0.

Entonces, creo que el código está mal, porque debe decir sumaIzq <= sumaDer.

 saludos,

Eduardo