function not working properly

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?

回答 (1 件)

Walter Roberson
Walter Roberson 2021 年 12 月 4 日

0 投票

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.

カテゴリ

ヘルプ センター および File ExchangeLinearization についてさらに検索

製品

質問済み:

2021 年 12 月 4 日

回答済み:

2021 年 12 月 4 日

Community Treasure Hunt

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

Start Hunting!

Translated by