How do you have a logical operator of true and false as your type but 0 and 1 as your value?
24 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alexandra Huff
el 8 de Ag. de 2016
Comentada: DGM
el 3 de Mzo. de 2023
Hi. I am having trouble with this homework question: Write a function called eligible that helps the admission officer of the Graduate School of Vanderbilt University decide whether the applicant is eligible for admission based on GRE scores. The function takes two positive scalars called v and q as input. They represent the percentiles of the verbal and quantitative portions of the GRE respectively. You do not need to check the input. The applicant is eligible if the average percentile is at least 92% and both of the individual percentiles are over 88%. The function returns the logical true or false. What I have attempted is below:
function [true, false] = eligible(v, q)
if mean(v, q)>= 92 && v>88 && q>88
fprintf('true\n');
elseif mean(v, q)<92
fprintf('false\n');
elseif v<=88
fprintf('false\n');
elseif q<=88
fprintf('false\n');
I think my problem is that I need the false to appear as the type but 0 to appear as my value and true to appear as the type but 1 to appear as my value.
2 comentarios
Pranav nair
el 17 de Jul. de 2020
function admit = eligible(v,q)
c = (v+q)/2;
if (c>= 92 && v>88 && q>88)
admit = true;
else (v < 88 && q < 88)
admit = false;
end
DGM
el 3 de Mzo. de 2023
See also:
Respuesta aceptada
Image Analyst
el 8 de Ag. de 2016
You used mean() incorrectly. Look at this:
>> mean(10,30) % WRONG!
ans =
10
>> mean([10,30]) % Right way uses brackets.
ans =
20
So instead of
if mean(v, q)>= 92 && v>88 && q>88
fprintf('true\n');
elseif mean(v, q)<92
fprintf('false\n');
elseif v<=88
fprintf('false\n');
elseif q<=88
fprintf('false\n');
use
if mean([v, q]) >= 92 && v > 88 && q > 88
fprintf('true\n');
isEligible = true;
else
fprintf('false\n');
isEligible = false;
end
3 comentarios
Walter Roberson
el 17 de Feb. de 2018
function a=eligible(v,q)
c=(v+q)/2;
a = (c>=92)&&(v>88&&q>88);
the cyclist
el 18 de Feb. de 2018
Or, if you are playing Cody ...
function ans = eligible(v,q)
((v+q)>=184)&&(v>88&&q>88);
[This is not a serious comment. Please do not take it as such!]
Más respuestas (7)
the cyclist
el 8 de Ag. de 2016
You are on the right track. Here is a hint ...
Instead of outputting two variables named true and false, I think you'd want to just output one variable -- maybe call it isEligible -- that takes on the values true/false.
It looks like you know how to calculate the value of isEligible, because you have used it to determine what to display to the screen.
0 comentarios
Jorge Briceño
el 28 de En. de 2018
Hi Alexandra,
Maybe another alternative would be:
function [isEligible]=eligible( v,q )
Your_Output_Name= v>88 && q>88 && ((q+v)/2)>=92
end
Cheers, Jorge
2 comentarios
Jorge Briceño
el 5 de Feb. de 2018
Ok, I had a silly typo. Thanks, Walter.
function [Your_Output_Name]=eligible( v,q )
Your_Output_Name= v>88 && q>88 && ((q+v)/2)>=92
end
ledinh lam
el 25 de Nov. de 2016
Editada: DGM
el 3 de Mzo. de 2023
I think it will be :
function el=eligible(v,q)
if mean([v,q]) >= 92 && v>88 && q >88
el=true;
else
el=false;
end
end
0 comentarios
Duddela Sai Prashanth
el 23 de Sept. de 2018
function [out] = eligible(v, q)
if v > 88 && q > 88 && (v+q)/2 >= 92
out = true;
else
out = false;
end
1 comentario
Walter Roberson
el 23 de Sept. de 2018
What essential difference is there between this and https://www.mathworks.com/matlabcentral/answers/298895-how-do-you-have-a-logical-operator-of-true-and-false-as-your-type-but-0-and-1-as-your-value#comment_586846 ?
Yamen Al-Jajan
el 23 de Nov. de 2019
function admit=eligible(v,q)
if v>=88 & q>=88
ave=(v+q)/2;
if ave>=92
admit=true;
else
admit=false;
end
else
admit=false;
end
0 comentarios
Rahul Krishna
el 31 de Mayo de 2021
function admit = eligible(v,q)
if (q +v)/2 >=92 && (v>88 && q>88)
admit = true
fprintf(' the candidate is eligible \n')
else
admit = false
fprintf(' the candidate is not eligible \n')
end
0 comentarios
MALK adil
el 29 de Dic. de 2021
function out = eligible(v,q)
out = (v+q)./2 >= 92 && v > 88 && q > 88;
if out==1
out= true;
else out= false;
end
1 comentario
Image Analyst
el 29 de Dic. de 2021
Editada: Image Analyst
el 29 de Dic. de 2021
@MALK adil your if block is totally unnecessary.
out is already a boolean (true or false) by how you define it. You do not need to check if it's a 1 (double) and then assign it to true (which it already is). I believe that when you compare a logical to a double (like bln == 7) it converts the logical to a double (false converts to 0, and true converts to 1) and then it compares that double to the number (7) and returns a double.
out = true
result = out == 7 % Convert out to double then compare the two doubles and return a logical
And if it's not 1 (the only other choice is false) there is no need to set it to false. It's already false!
So you could simply have done
function out = eligible(v,q)
out = (v+q)./2 >= 92 && v > 88 && q > 88;
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!