MATLAB: Help needed with the program

holdiay x

function [x] = holiday( month, day )
M = [1,2,3,4,5,6,7,8,9,10,11,12];
D = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
if nargin < 1
error('The input must be a positive integer');
end
if ~isscalar(month) || month <1 || month ~= fix(month)
error ('The input "Month" must be positive integer');
elseif ~isscalar(day) || day <1 || day ~= fix(day)
error ('The input "Day" must be positive integer');
end
*if(M == 1 && D ==1) || (M == 7 && D == 4) || (M == 12) && D == 25) || (M == 12 && D == 31)*
x = true;
else
x = false;
end
end
Matlab says that The text that i have made bold is wrong. Error occurs:,saying: Unexpected bracket or parenthesis.
Can anyone please clarify this for me?

Best Answer

As Kalyan Acharjya has already shown the actual error is a wrong parenthesis.
if(M == 1 && D ==1) || (M == 7 && D == 4) || (M == 12) && D == 25) || (M == 12 && D == 31)
^^^^ ^^^^
However your code will still not work as intented. You create 2 vectors M and D, that you do not need for the given task (but you should try D=1:31 in command line).
For the actual task your code ignores the function inputs (month,day) and uses your created vectors. A corrected version might look like this:
function x=holiday(M,D) %i was too lazy to change all the Ms and Ds to month and day....
if(M == 1 && D ==1) || (M == 7 && D == 4) || (M == 12 && D == 25) || (M == 12 && D == 31)
x=true;
else
x=false;
end
end
If you want to check for correct input aswell, please consider that
if nargin < 1 %should be if nargin ~=2, however your function will throw an error anyway if called with less or more than 2 inputs and this line does not get executed....
error('The input must be a positive integer'); %you are checking the number of inputs, not if the input is an integer or string or vector or whatever
end
if ~isscalar(month) || month <1 || month ~= fix(month) %maybe check for >12/31 aswell, not sure about the rounding
error ('The input "Month" must be positive integer');
elseif ~isscalar(day) || day <1 || day ~= fix(day)
error ('The input "Day" must be positive integer');
end