CS 99

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