Функция, которая принимает дату и возвращает утверждение о проверке даты - PullRequest
0 голосов
/ 05 июня 2019

Напишите функцию с именем valid_date , которая принимает три целочисленных скалярных входных значения year , month , day . Если эти три представляют правильную дату, верните логическую истину , в противном случае ложь . Имя выходного аргумента: valid . Если какой-либо из входных данных не является положительным целочисленным скаляром, верните также false . Обратите внимание, что каждый год, который в точности делится на 4, является високосным, за исключением лет, которые в точности делятся на 100. Однако годы, которые в точности делятся на 400, также являются високосными. Например, 1900 год был не високосным, а 2000 год. Обратите внимание, что ваше решение не должно содержать никаких встроенных функций MATLAB, связанных с датой.

образцы:

valid = valid_date(2018,4,1)
valid = valid_date(2018,4,31)

Выходы:

valid = 
  logical 
     1 

valid = 
  logical 
     0

1 Ответ

0 голосов
/ 05 июня 2019

Мой код был:

function out= valid_date(y,m,d)



if mod(y,4)==0
    if mod (y,100)==0
        if mod(y,400)==0
            leap =true;
        else
            leap=false;
        end
    else
        leap =true;
    end
else
    leap= false;
end 

if y>0 &m>0&d>0 &y==fix(y)&m==fix(m)&d==fix(d)&m<=12 &isscalar(y)&isscalar(m)& isscalar(d)

if (m==1 | m==3|m==5|m==7 |m==8 |m==10 |m==12)&d <=31
        out=true;
    elseif d<=30
        if m==2 
            if leap==true & d<=29
                out =true;
            elseif leap==false &d<=28
                out=true;
            else
                out=false;
            end
        else
            out=true;
        end
else
    out =false;
    end
else
    out= false;
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...