MATLAB Calculate Grades and Pass/Fail Status with Basic Matlab Programming

Click For Summary
The discussion revolves around a MATLAB script intended to calculate a student's final grade based on weighted scores and determine if the student passes or fails. The user reports an issue where the script correctly calculates the final score but incorrectly states "Student Fails" instead of "Student Passes." The problem is identified as a misuse of relational operators in the conditional statements, specifically the line "if 65>final>=50," which is not valid in MATLAB. It is suggested to restructure the conditional logic using separate `if` and `elseif` statements for clearer comparisons. The importance of properly terminating `if` statements with an `end` is also highlighted. After implementing these changes, the user confirms that the script functions correctly. Links to Mathworks documentation on control statements are provided for further reference.
roam
Messages
1,265
Reaction score
12
http://img16.imageshack.us/img16/3078/15688239.gif

So here's my script:

Code:
x=[a, b, c, d];
w=[0.65 0.2 0.05 0.1]';
final=x*w;
disp(final);
if 65>final>=50
    disp('Grade is: C')
elseif 80>final>=65
    disp('Grade is: B')
elseif final>=80
    disp('Grade is: A')
If final>=50
    disp('Student Passes')
    else
        disp('Student Fails')
end

So for example I tried x = [70, 50, 30, 45]:

Code:
x=[70, 50, 30, 45];
w=[0.65 0.2 0.05 0.1]';
final=x*w;
disp(final);
if 65>final>=50
    disp('Grade is: C')
elseif 80>final>=65
    disp('Grade is: B')
elseif final>=80
    disp('Grade is: A')
If final>=50
    disp('Student Passes')
    else
        disp('Student Fails')
end

I got the following answer:

Code:
   61.5000

Student Fails

Well, it calculated the mark correctly, but I don't understand why it says "student fails" when it should be displaying "student passes". :confused: It also doesn't display the grade. What's the problem? Can anyone help? :rolleyes:
 
Last edited by a moderator:
Physics news on Phys.org
Probably because you didn't terminate the first 'if' loop with an 'end' statement. My MATLAB may be a little rusty, but I also don't recall if you can use the relational operators in the way you do:
Code:
if 65>final>=50

You probably want to restructure with a bunch of elseif statements that make a single comparison and cascade downwards (such that you only get one output, and not all the outputs for which the final grade is valid, e.g. a mark of 90 getting you an A, B, C and fail):
Code:
if final >= 80
      disp('Grade is: A')
elseif grade >=65
      disp('Grade is: B')
%other stuff
end

EDIT: Mathworks documentation pages for control statements, and the if statement:
http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/brqy1c1-1.html#brqy1c1-3
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/if.html
 
Last edited by a moderator:
Thanks a lot for your input, I tried it and it worked. :smile: :smile:
 

Similar threads

  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 9 ·
Replies
9
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 9 ·
Replies
9
Views
23K
  • · Replies 5 ·
Replies
5
Views
6K