Help needed with the program

1 vue (au cours des 30 derniers jours)
Yash Sunil Runwal
Yash Sunil Runwal le 8 Août 2018
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?
  5 commentaires
Yash Sunil Runwal
Yash Sunil Runwal le 8 Août 2018
Line 12. The IF Statement
KALYAN ACHARJYA
KALYAN ACHARJYA le 8 Août 2018
I have edited the answer, pls check and confirm. I have removed all non-mandatory lines, you can add them after successfully execute the code.

Connectez-vous pour commenter.

Réponse acceptée

Dennis
Dennis le 8 Août 2018
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
  1 commentaire
Yash Sunil Runwal
Yash Sunil Runwal le 8 Août 2018
Thanks. I was over complicating it for no reason. It worked.

Connectez-vous pour commenter.

Plus de réponses (1)

KALYAN ACHARJYA
KALYAN ACHARJYA le 8 Août 2018
Modifié(e) : KALYAN ACHARJYA le 8 Août 2018
function x=holiday(m,d)
i={1,2,3,4,5,6,7,8,9,10,11,12};
j={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(i{m}==1 && j{d}==1) || (i{m}==7 && j{d}==4) || (i{m}==12 && j{d}==25) || (i{m}==12 && j{d}==31)
x='true';
else
x='false';
end
end
  6 commentaires
KALYAN ACHARJYA
KALYAN ACHARJYA le 8 Août 2018
@ Yash Sunil I have tested the code in small way, you can do the same
for more data.
Yash Sunil Runwal
Yash Sunil Runwal le 8 Août 2018
function [x] = holiday( month, day )
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 (month == 1 && day ==1) || (month == 7 && day == 4) || (month == 12 && day == 25) || (month == 12 && day == 31)
x = true;
else
x = false;
end
end
if true
% code
end
This also worked.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Dates and Time dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by