%-------------------------------------% % Homework 5: 4.17 % % Date: 10/21/2002 % % % % Gun Srijuntongsiri % % gs61 % % ?????? % %-------------------------------------% % Variables: % day -- Day (dd) % day_of_year -- Day of year % ii -- Loop index % month -- Month (mm) % year -- Year (yyyy) % valid -- whether it's a valid day/month/year % Get day, month, and year to convert disp('This program calculates the day of year give the '); disp('current date.'); month = input('Enter current month (1-12): '); day = input('Enter current day (1-31): '); year = input('Enter current year(yyyy): '); % Check for leap year, and add extra day if necessary if mod(year,400) == 0 leap_day = 1; elseif mod(year,100) == 0 leap_day = 0; elseif mod(year,4) == 0 leap_day = 1; else leap_day = 0; end % Check for legal day, month, and year valid = 1; % assume valid input first % If year <= 0, month not in 1 to 12, day < 1, it's invalid if (year <= 0) disp('Year is invalid'); valid = 0; elseif (month <1) | (month > 12) disp('Month is invalid'); valid = 0; elseif (day < 1) disp('Day is invalid'); valid = 0; else % if still valid, check that day not larger than % maximum number of days on that month switch(month) case {1,3,5,7,8,10,12}, if day > 31, valid = 0; end case {4,6,9,11}, if day > 30, valid = 0; end case 2 if day > 28+leap_day, valid=0; end end if valid==0, disp('Day is invalid'); end end if valid~=0 % Calculate day of year by adding current day to the days % in previous months. day_of_year = day; for ii= 1:month-1 % Add days in months from January to last month switch(ii) case {1,3,5,7,8,10,12}, day_of_year = day_of_year + 31; case {4,6,9,11}, day_of_year = day_of_year + 30; case 2, day_of_year = day_of_year + 28 + leap_day; end end % Tell user fprintf('The date %2d/%2d/%4d is day of year %d.\n', ... month, day, year, day_of_year); end