ejercicio 8

ejercicio 8

de Carlos Gabriel Verdun Fernandez -
Número de respuestas: 3

Hola, quería probar en este ejercicio haciendo un for de 1:100 e identificar los múltiplos con la función mod, por ejemplo si mod(a,3)=0, a sería múltiplo de 3. De esa forma encadenar if para los múltiplos de 3, 5 y los que se piden.

Pero me da un error que no me doy cuenta cual es, me genera incluso una variable mod que en realidad tampoco lo busco.

Adjunto un ejemplo mas corto con valores inventados de lo que estoy intentando hacer:

for a=1:10
   if mod(a,2)=0
      disp('par')
   endif
endfor

Eso debería mostrarme la palabra "par" para los valores pares entre 1 y 10. Sin embargo me da:

warning: suggest parenthesis around assignment used as truth value near line 2, column 12 in file


Seguramente estoy haciendo algo mal y no logro verlo.


Gracias.

En respuesta a Carlos Gabriel Verdun Fernandez

Re: ejercicio 8

de Eduardo Fernandez -

Hola Carlos,

Creo que lo que pasa es un error muy común.

Cuando estás escribiendo una expresión lógica de igualdad entre A y B, se utiliza la formulación A == B. Vos estás poniendo A = B, pero eso es en Octave una asignación. Octave intenta poner el valor de B en A. También ocurre que en A escribiste mod(a,2), por tanto entiende que hay una matriz de nombre mod que en la posición (a,2) querés asignarle el valor 0. 

O sea, hay una distancia muy grande entre lo que entiende Octave que querés hacer y lo que realmente querés hacer.  

La solución es poner  if mod(a,2)==0 , en la línea 2 del código, con el doble igual (==)

Espero que haya sido claro.

Eduardo

En respuesta a Eduardo Fernandez

Re: ejercicio 8

de Macarena Perdomo Lanusse -
Hola que tal?
No entiendo por qué este código no funciona. Solo me muestra en cada iteración los números del vector.
v=[1:100];
i=1;
while (i <=100)
numero=v(i)
if (mod(numero,3)=0)&&(mod(numero,5)=0)
disp('ELADIO')
disp('DIESTE');
elseif (mod(numero, 3)=0)
disp('ELADIO');
elseif (mod(numero, 5)=0)
disp('DIESTE');
else
disp(numero);
endif
i=i+1
endwhile

Desde ya, muchas gracias.
En respuesta a Macarena Perdomo Lanusse

Re: ejercicio 8

de Eduardo Fernandez -

Hola,

En las expresiones lógicas, la igualdad se representa con ==, no con =

Por ejemplo, en (mod(numero,3)=0), tenés que poner (mod(numero,3)==0)

Probalo y corregí otros errores que tiene.

Por ejemplo, no es necesario generar v, cuando v(i)==i siempre.

Espero que haya quedado claro,

Eduardo