Summer
2002: HW 3
Solution
clear
all;
%Prompt
user for score
score = input('Enter a score: ');
if score < 0 | ~isnumeric( score )
disp('Illegal input. Program terminated.');
else
%Determine initial rating
if score >= 750000
rating
= 'Kwisatz Packerach ';
elseif score >= 600000
rating
= 'Pac Jedi ';
elseif score >=
450000;
rating
= 'Pac Master ';
elseif score >=
300000
rating
= 'Pacawan Learner ';
elseif score >=
150000
rating
= 'Pac Apprentice ';
else
rating
= 'Pac Novice ';
end
%Define constants
THIRD = 50000;
J_LO = 600000; J_HI = 749999;
M_LO = 450000; M_HI = 599999;
L_LO = 300000; L_HI = 449999;
A_LO = 150000; A_HI = 299999;
%Modify variable rating based on which third of its range score falls in
if ( score >=J_HI - THIRD & score < J_HI ) | ( score >= M_HI-THIRD
& score < M_HI )
rating
= [ 'sublime ', rating ];
elseif ( score >=
J_LO & score <= J_LO + THIRD) | ( score >= M_LO & score <=
M_LO + THIRD)
rating
= [ 'starting ', rating ];
elseif ( score >=
L_HI-THIRD & score <= L_HI) | (score >= A_HI-THIRD & score <=
A_HI)
rating
= [ 'tested ', rating];
elseif ( score >=
L_LO & score <= L_LO + THIRD) | (score >=A_LO & score <= A_LO
+ THIRD)
rating
= [ 'newbie ', rating];
end
%Report rating
disp([ 'You are a '
rating ]);
end
%SAMPLE OUTPUT:
%>>pacscore
%Enter a score: 14600
%You are a Pac Novice
%>>pacscore
%Enter a score: 175000
%You are a newbie Pac Apprentice
%>>pacscore
%Enter a score: 503600
%You are a Pac Master
%>>pacscore
%Enter a score: 700000
%You are a sublime Pac Jedi
%>>pacscore
%Enter a score: 999990
%You are a Kwisatz Packerach