Write a function called eligible that helps the admission officer of the Graduate School decide whether the applicant is eligible for admission based on GRE scores. The function takes two positive scalars called v and q as in
Información
This question is locked. Vuélvala a abrir para editarla o responderla.
Mostrar comentarios más antiguos
function admit=eligible(v,q);
if v>=92 && q>=88;
fprintf('true')
else
fprintf('false')
end
6 comentarios
Walter Roberson
el 11 de Jul. de 2019
Editada: Walter Roberson
el 9 de Dic. de 2019
Rik
el 12 de Jul. de 2019
What is your question? Also, as Walter pointed out you don't assign an output.
Moeez ur Rehman Qureshi
el 12 de Jul. de 2019
Mir Umar
el 22 de Ag. de 2021
function admit = eligible(v,q);
avperc = mean([v,q]);
if avperc>= 92 && (v>88&&q>88)
admit = true;
else admit = false;
end
DGM
el 3 de Mzo. de 2023
See also:
eligible(99,88)
function admit = eligible(v,q);
avperc = mean([v,q]);
if avperc>= 92 && (v>88&&q>88)
admit = true;
else admit = false;
end
end
@Mikail this is a correct output for 99, 88, at least according to the question posted at https://www.mathworks.com/matlabcentral/answers/471264-write-a-function-called-eligible-that-helps-the-admission-officer-of-the-graduate-school-decide-whet#comment_723801 where is says that the individual scores must be over 88% . Over 88% means that 88% exactly is not eligible.
Respuestas (9)
VIGNESH B S
el 13 de Oct. de 2021
function res = eligible(v,q)
pass = logical(0);
avg = (v+q)/2;
if (avg>= 92 && v >88 && q>88)
pass = logical(1);
end
res = pass;
end
Aramis
el 5 de Feb. de 2024
This is the BEST FCKN ANSWER
function admit = eligible(v, q)
admit = mean([v q]) >= 92 && min([v q]) > 88;
end
1 comentario
Steven Lord
el 11 de Jul. de 2019
Nowhere in your function do you define the variable admit the function returns as its output. You haven't shown the full text of the homework question but I suspect it tells you to have your function return true or false instead of printing the text "true" or "false". To do that assign a value to the variable.
admit = true;
admit = false;
7 comentarios
Moeez ur Rehman Qureshi
el 12 de Jul. de 2019
Rik
el 12 de Jul. de 2019
Where are you getting those numbers from in your code? Is that clear from previous context?
Steven Lord
el 13 de Jul. de 2019
Reread the question. There are three criteria that the test scores need to satisfy in order for the student to be admitted. You have one of the three correct, one incorrect, and you're missing the third.
Your code rejects the student, but by the criteria in the question they should be admitted.
Chech Joseph
el 5 de Sept. de 2019
Not sure why it is falling the various input test. Please help.
function [admit] = eligible(v , q)
gre_av = mean([v , q]);
admit = true;
admit = false
if (gre_av >= 92) && (v >= 88 && q >=88);
admit = true;
else
admit = false;
end
end
Walter Roberson
el 5 de Sept. de 2019
What is the point of assigning true and then false to admit ?
Note that "over 88%" does not include 88% .
nitish Yadav
el 23 de Sept. de 2019
function admit=eligible(v,q)
if (q+v)/2 >= 92 && (q>88 && v>88)
admit=q&&v;
else
admit=~q&&v;
end
Walter Roberson
el 23 de Sept. de 2019
q and v are numeric values. When you use the && operator between them, admit=q&&v is defined as
if q ~= 0
if v ~= 0
admit = true;
else
admit = false;
end
else
admit = false;
end
However, the assignment makes no mention of testing for zero or not.
In particular when you get to your else branch, admit=~q&&v then that would be true if q was 0 and v was non-zero, leading you to admit someone with a score of 0 for q when the assignment would require that they be rejected because 0>88 is false.
Jake Armitage
el 14 de Abr. de 2021
After enough struggle I am wondering who can help me understand why I'm returning errors from this program. Thanks
function admit = eligible(v,q)
avperc = mean([v,q]);
if avperc>= 92 && (v&&q>88)
admit = true;
else admit = false;
end
end
5 comentarios
Walter Roberson
el 14 de Abr. de 2021
As far as MATLAB is concerned,
(v&&q>88)
means the same as
(v~=0&&q>88)
which is like
if v is 0
result is false
else
if q > 88
result is true
else
result is false
end
end
In MATLAB, the compact way to test if scalars v and q are both > 88 would be
all([v,q]>88)
but you might as well just use
v>88&&q>88
Jake Armitage
el 14 de Abr. de 2021
Thank you Walter. I have edited the code but still return incorrect logical for two of the three calls of the function. I'm evidently still missing something.
This is what I currently have:
function admit = eligible(v,q)
if mean([v,q])>=92 && v>88 && q>88
admit = true;
else
admit = false;
end
end
admit = eligible(96,89)
That is correct, the mean is 92.5 and each entry is more than 88
admit = eligible(88,99)
That is correct, the mean is 93.5 but the first value, 88, is not more than 88
admit = eligible(92,91)
This is correct, the mean is less than 92
So at the moment I do not see any problems with the code
function admit = eligible(v,q)
if mean([v,q])>=92 && v>88 && q>88
admit = true;
else
admit = false;
end
end
ashokkumar rathinam
el 7 de Jul. de 2021
May I know the reason for two end statement in the programme sir? is it one end statement enough?
Rik
el 7 de Jul. de 2021
One closes the if, the other closes the program.
While using an end to close the program is optional, it is recommended that you do. If functions are explicitly closed with an end, you can use nested functions and you can define local functions in a script.
Tushar Nagar
el 13 de Dic. de 2021
Editada: DGM
el 3 de Mzo. de 2023
function admit=eligible(v,q)
avg=(v+q)/2;
rv=false;rq=false;
if v>88 && avg>=92
rv=true;
end
if q>88 && avg>=92
rq=true;
end
admit=rv && rq;
end
1 comentario
DGM
el 3 de Mzo. de 2023
(A & B) & (C & B) is the same as A & B & C
Ankit Sharma
el 14 de Jun. de 2022
Editada: DGM
el 3 de Mzo. de 2023
creating a function to get the results
function admit = eligible(v,q) % taking input as question required
avg = (v+q)/2; % we have to find the average so we can compare it with required variables
if (v>88 && avg>=92) && (q>88 && avg>=92) % condition check (logically) wheather v is greater
% then 88 and average is greater than 92 and same we are going
% to check logically for q and submitting the result in admit
admit = true;
else % if above conndition not satisfied then running else function and return false if condition not satisfied
admit = false;
end
end
Alexandar
el 28 de Jun. de 2022
function admit = eligible(v,q)
avg = (v+q)/2;
if avg > 92
admit = true(1);
elseif v >= 88 && q >= 88
admit = false(0);
else admit = 0;
end
I have no clue why this keeps failing. Can somebody please explain why?
2 comentarios
Alexandar
el 28 de Jun. de 2022
function admit = eligible(v,q)
gre_avg = (v+q)/2;
if (gre_avg >= 92) && (v > 88 && q > 88)
admit = 1;
else
admit = 0;
end
Wait, please check why this code is incorrect. Thank you!
DGM
el 3 de Mzo. de 2023
The output needs to be of class 'logical'. In this example, the outputs are 1 or 0 -- which are numeric.
The functions false() and true() are functions used to create constant-valued logical arrays, much like zeros() and ones() are used to create constant-valued numeric arrays. In the first example, true(1) creates a logical scalar, whereas false(0) creates an empty logical array.
You could cast the given numeric values to logical using logical()
admit = logical(1);
... or you could directly assign the appropriate logical scalar
admit = true;
... or you could realize that the output of a comparison is already a logical value.
function admit = eligible(v,q)
gre_avg = (v+q)/2;
admit = (gre_avg >= 92) && (v > 88 && q > 88);
end
Thank you for bringing this here. All this while the solution was in the error message '' the variable admit must be a logical data type".
function admit = eligible (v,q)
avg= (v+q)/2;
if (avg>=92) && (v>88 && q>88)
admit=logical(1); %most previous contributions here are thesame except at this point
else
admit=logical(0); %... and here
end
end
1 comentario
Walter Roberson
el 25 de Sept. de 2022
Movida: DGM
el 3 de Mzo. de 2023
logical(1) can be written as true and logical(0) can be rewritten as false
Arah Cristal
el 12 de Oct. de 2022
function admit=eligible(v,q);
avg = (v+q)/2;
if (avg>=92 && v>88 && q>88);
admit = true
else
admit = false
end
1 comentario
DGM
el 12 de Oct. de 2022
The output of the combined comparisons is a logical value, so there really isn't any need to conditionally assign the output. You already have it.
function admit = eligible(v,q)
avg = (v+q)/2;
admit = avg>=92 && v>88 && q>88;
end
This question is locked.
Categorías
Más información sobre Creating, Deleting, and Querying Graphics Objects en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
.png)
