function not working properly

9 views (last 30 days)
ba sa
ba sa on 4 Dec 2021
Answered: Walter Roberson on 4 Dec 2021
i have this function, which is supposed to get three numbers and check if they're scalars and bigger than one
function valid = valid_date (year,month,day)
if ~isscalar(year)||year<1
valid=~1;
elseif ~isscalar(month)||month<1||month>12
valid=~1;
elseif ~isscalar(day)||day<1
valid=~1;
end
but when i give it
valid_date(2019,4,0)
or
valid_date(1,1,0)
it should give a logical 0 but it gives a 1
ans =
logical
1
it works correctly with (0,1,1) or (0,1,0) or (1,0,1) but this specific combination seems to break it
how do i fix it?

Answers (1)

Walter Roberson
Walter Roberson on 4 Dec 2021
The code you post only assigns to valid in situations where it has valid=~1 so it can only ever assign false (0) to valid. There is no case in which the code can return 1 for valid.

Categories

Find more on Linearization in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!