if-statements for reassigning values

7 visualizaciones (últimos 30 días)
Spaceman
Spaceman el 22 de Mzo. de 2024
Comentada: Spaceman el 8 de Abr. de 2024 a las 3:26
Given: Write a script that creates a random integer N, which is in the range [-100,100]. If that number is in the range [-20,20], reassign N to be the current value of N multiplied by 2. If the number is greater than 20, reassign N to be the square root of the current value. Otherwise, reassign N to be the current value divided by 4.
Find: Use an if-statement to complete this.
Issue: I'm getting errors stating I don't know how to use '='. To me, my solution makes sense. But I have trouble with syntax in MATLAB.
My Solution:
N=randi([-100,100]);
if N=[-20,20]
N=N*2
else if N>20
N=sqrt(N)
else
N=N/4
end

Respuesta aceptada

Voss
Voss el 22 de Mzo. de 2024
Use
if N >= -20 && N <= 20
And remove the space in "else if".
  5 comentarios
Voss
Voss el 8 de Abr. de 2024 a las 3:09
You're welcome!
Spaceman
Spaceman el 8 de Abr. de 2024 a las 3:26
You're a real one!

Iniciar sesión para comentar.

Más respuestas (1)

Steven Lord
Steven Lord el 22 de Mzo. de 2024
Let's look at the exact text of the error you received.
N=randi([-100,100]);
if N=[-20,20]
Incorrect use of '=' operator. Assign a value to a variable using '=' and compare values for equality using '=='.
N=N*2
else if N>20
N=sqrt(N)
else
N=N/4
end
Using "N = [-20 20]" attempts to assign a vector with two elements to N. Assignment is not allowed in the condition part of an if statement.
Using "N == [-20 20]" (assuming N is compatibly sized) compares elements of N with elements of the vector [-20 20]. Comparison is allowed in the condition part of an if statement.
But you don't want to check if the elements in N are equal to -20 and 20. You want to check if they're in that interval. For that use the four inequality relational operators like < and >=. The and, & and or, | operators will also be of use.
  1 comentario
Spaceman
Spaceman el 22 de Mzo. de 2024
Genius. This makes complete sense I forget I am generally only using logical operators with if and elseif statements. Also as Voss pointed out, I had a space in my elseif. Thank you for clearing that up.

Iniciar sesión para comentar.

Categorías

Más información sobre Install Products en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by