Examen diciembre 2018

Examen diciembre 2018

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

Hola, 

No entiendo porque cierra un if y abre otro en vez de usar el else? 

function [s1,s2]=sumaT(v,n1,n2)

 s1=0;s2=0; lv=length(v);

 for i=1:lv 

 if mod(v(i),n1)==0 s1=s1+v(i);

 end % aca yo en mi solucion use un else 

 if mod(v(i),n2)==0 s2=s2+v(i);

 end

 end

Lo mismo me pasa en la parte b 

function [s1,s2]=suma3(v,n1,n2)

 s1=0; s2=0; cont1=0; cont2=0; i=1; lv=length(v); 

 while cont1<3  && cont2<3 && i<=lv 

 if mod(v(i),n1)==0 

 s1=s1+v(i); 

 cont1=cont1+1; 

 else

  mod(v(i),n2)==0 

 s2=s2+v(i); 

 cont2=cont2+1; 

 end i=i+1;

 end

Este es el codigo que use para la parte b quiero saber si hay algo conceptualmente mal primero que en el while use otra sentencia diferente a la solucion y luego que use un solo if con un else

Muchas gracias

En respuesta a Virginia Andrea Alonzo Perez

Re: Examen diciembre 2018

de Eduardo Fernandez -

Hola,

Lo que ocurre es que un número puede ser múltiplo de n1 y de n2, por ejemplo cualquier número n1*n2*k, con k entero. Si ponés un else entonces no vas a permitir esa posibilidad. La solución es poner un if ... end, y a continuación otro if ... end. En el primer if se evalúa que v(i) sea múltiplo de n1 , y en el segundo if se evalúa que v(i) sea múltiplo de n2.


Espero que haya quedado clara la respuesta. 

Eduardo