if-statements for reassigning values

7 visualizzazioni (ultimi 30 giorni)
Spaceman
Spaceman il 22 Mar 2024
Commentato: Spaceman il 8 Apr 2024 alle 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

Risposta accettata

Voss
Voss il 22 Mar 2024
Use
if N >= -20 && N <= 20
And remove the space in "else if".
  5 Commenti
Voss
Voss il 8 Apr 2024 alle 3:09
You're welcome!
Spaceman
Spaceman il 8 Apr 2024 alle 3:26
You're a real one!

Accedi per commentare.

Più risposte (1)

Steven Lord
Steven Lord il 22 Mar 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 Commento
Spaceman
Spaceman il 22 Mar 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.

Accedi per commentare.

Categorie

Scopri di più su Install Products in Help Center e File Exchange

Prodotti


Release

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by