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
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
En respuesta a Eduardo Fernandez
Re: Problema 2 examen febrero 2023
Muchas gracias si fue lo que yo pense. Pero no entiendo porque funciona en octave.