Re: [請益] 這題計算年月日的程式要怎麼寫阿(急!!!)
※ 引述《NicolasY (走自己的路)》之銘言:
: 小弟只差這題即可畢業了,請版上各位高手出手相助阿~~~~
: 題目如下:
: 平年為365天,閏年將再多加一天(每四年一閏,每百年不閏)。試撰寫一個MATLAB程式,
: 以計算"自民國某年某月某日迄今共經過多少天"。
: 使用者輸入資料:欲進行計算之民國yy年mm月dd日,今日為民國tyy年tmm月tdd日。
: 輸出請用fprintf以整數%d格式,按"自民國yy年mm月dd日迄民國tyy年tmm月tdd日..
: 共經過total_day日"之敘述內容輸出。
: 這題我想了很久...但是都沒頭緒,請各位高手們救救我吧!!!拜託了(鞠躬)
提示一下
先找一天作為reference day
分別計算輸入的兩個日期與這個ref. day的天數差距
最後相減就是結果啦
這種題目好像每個程設的課都會出的說
下面是我寫的code
我沒詳細去驗證出來的數字對不對
但是作法差不多
請自己check一下吧
%%%%%%%%%% codes start
oldday=input('Input old day:(yymmdd)\n','s');
newday=input('Input today:(yymmdd)\n','s');
if length(oldday)~=6 || length(newday)~=6 % check format
error('Day format not correct!');
end
mdays=[31 28 31 30 31 30 31 31 30 31 30 31]; % days in month
y1=str2num(oldday(1:2))+1910;
y2=str2num(newday(1:2))+1910;
m1=str2num(oldday(3:4));
m2=str2num(newday(3:4));
d1=str2num(oldday(5:6));
d2=str2num(newday(5:6));
bis1=floor(y1/4); % bissextile to year 1
bis2=floor(y2/4); % bissextile to year 2
bis3=floor(y1/100); % not bissextile in hundred years
bis4=floor(y2/100);
d2oldday=y1*365+bis1-bis3; % days to year 1, 1/1
d2newday=y2*365+bis2-bis4; % days to year 2, 1/1
d2oldday=d2oldday+sum(mdays(1:m1-1))+d1; % days to day 1
d2newday=d2newday+sum(mdays(1:m2-1))+d2; % days to day 2
if rem(y1+1,4)==0 && rem(y1+1,100)~=0 && m1>2 % check year 1 for bissextile
d2oldday=d2oldday+1;
end
if rem(y2+1,4)==0 && rem(y2+1,100)~=0 && m2>2 % check year 2 for bissextile
d2newday=d2newday+1;
end
totaldays=d2newday-d2oldday; % calculate days difference
fprintf('自民國%d年%d月%d日迄民國%d年%d月%d日共經過%d日\n',...
y1-1910,m1,d1,y2-1910,m2,d2,totaldays);
%%%%%%%%%% codes end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.156.25
※ 編輯: abin987 來自: 220.132.156.25 (07/06 01:32)
推
07/06 16:24, , 1F
07/06 16:24, 1F
※ 編輯: abin987 來自: 220.132.156.25 (07/06 22:50)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章