# 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

82 visualizaciones (últimos 30 días)
Moeez ur Rehman Qureshi el 11 de Jul. de 2019
Editada: DGM el 5 de Feb. de 2024
if v>=92 && q>=88;
fprintf('true')
else
fprintf('false')
end
##### 6 comentariosMostrar 4 comentarios más antiguosOcultar 4 comentarios más antiguos
DGM el 3 de Mzo. de 2023
Walter Roberson el 13 de Nov. de 2023
eligible(99,88)
ans = logical
0
avperc = mean([v,q]);
if avperc>= 92 && (v>88&&q>88)
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.

Iniciar sesión para comentar.

### 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
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

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.
##### 7 comentariosMostrar 5 comentarios más antiguosOcultar 5 comentarios más antiguos
nitish Yadav el 23 de Sept. de 2019
if (q+v)/2 >= 92 && (q>88 && v>88)
else
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
else
end
else
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.

Iniciar sesión para comentar.

Aramis el 5 de Feb. de 2024
This is the BEST FCKN ANSWER
admit = mean([v q]) >= 92 && min([v q]) > 88;
end
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
DGM el 5 de Feb. de 2024
Editada: DGM el 5 de Feb. de 2024
I was skeptical of the bold claim, but I'm pretty sure this is the cleanest out of all four threads. At least it breaks the pattern of bad practices that everyone keeps recycling.

Iniciar sesión para comentar.

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
avperc = mean([v,q]);
if avperc>= 92 && (v&&q>88)
end
end
##### 5 comentariosMostrar 3 comentarios más antiguosOcultar 3 comentarios más antiguos
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.

Iniciar sesión para comentar.

Tushar Nagar el 13 de Dic. de 2021
Editada: DGM el 3 de Mzo. de 2023
avg=(v+q)/2;
rv=false;rq=false;
if v>88 && avg>=92
rv=true;
end
if q>88 && avg>=92
rq=true;
end
end
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
DGM el 3 de Mzo. de 2023
(A & B) & (C & B) is the same as A & B & C

Iniciar sesión para comentar.

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
else % if above conndition not satisfied then running else function and return false if condition not satisfied
end
end
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Alexandar el 28 de Jun. de 2022
avg = (v+q)/2;
if avg > 92
elseif v >= 88 && q >= 88
end
I have no clue why this keeps failing. Can somebody please explain why?
##### 2 comentariosMostrar NingunoOcultar Ninguno
Alexandar el 28 de Jun. de 2022
gre_avg = (v+q)/2;
if (gre_avg >= 92) && (v > 88 && q > 88)
else
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()
... or you could directly assign the appropriate logical scalar
... or you could realize that the output of a comparison is already a logical value.
gre_avg = (v+q)/2;
admit = (gre_avg >= 92) && (v > 88 && q > 88);
end

Iniciar sesión para comentar.

Idris jae el 25 de Sept. de 2022
Editada: DGM el 3 de Mzo. de 2023
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".
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
end
end
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
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

Iniciar sesión para comentar.

Arah Cristal el 12 de Oct. de 2022
avg = (v+q)/2;
if (avg>=92 && v>88 && q>88);
else
end
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
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.
avg = (v+q)/2;
admit = avg>=92 && v>88 && q>88;
end

Iniciar sesión para comentar.

### Categorías

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

### Community Treasure Hunt

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

Start Hunting!

Translated by