Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Hubert Zhang - CPS 171
- c17121
- Last Modified 3/31/2020
- */
- #include <iostream>
- #include <iomanip>
- #include <fstream>
- #include <string>
- #include <cmath>
- using namespace std;
- bool Leap_Year(int year);
- void Get_Date(ifstream& fin, ofstream& fout, int& month, int& day, int& year, bool& valid, bool& leap);
- string Print_Month(int month);
- int Convert_to_Julian(int month, int day, bool& leap);
- int Time_Elapsed(int year1, int year2, int julian1, int julian2);
- int main()
- {
- ifstream fin;
- ofstream fout;
- fin.open("mp4in.txt");
- fout.open("mp4out.txt");
- int month1 = 0, day1 = 0, year1 = 0, month2 = 0, day2 = 0, year2 = 0, time = 0,
- julian1 = 0, julian2 = 0, temp_year, temp_month, temp_day;
- bool valid1 = true, leap1 = true, valid2 = true, leap2 = true;
- Get_Date(fin, fout, month1, day1, year1, valid1, leap1);
- Get_Date(fin, fout, month2, day2, year2, valid2, leap2);
- while (fin)
- {
- if (year1 > year2)
- {
- temp_year = year1;
- year1 = year2;
- year2 = temp_year;
- temp_month = month1;
- month1 = month2;
- month2 = temp_month;
- temp_day = day1;
- day1 = day2;
- day2 = temp_day;
- }
- else if (month1 == month2)
- {
- if (day1 > day2)
- {
- temp_day = day1;
- day1 = day2;
- day2 = temp_day;
- }
- }
- fout << month1 << " " << day1 << " " << year1 << endl;
- fout << month2 << " " << day2 << " " << year2 << endl;
- julian1 = Convert_to_Julian(month1, day1, leap1);
- julian2 = Convert_to_Julian(month2, day2, leap2);
- time = Time_Elapsed(year1, year2, julian1, julian2);
- if (time == 1)
- {
- fout << "There is " << time << " day between " << Print_Month(month1) << " " << day1 << ", "
- << year1 << " and " << Print_Month(month2) << " " << day2 << ", " << year2 << endl;
- }
- else
- {
- fout << "There is " << time << " days between " << Print_Month(month1) << " " << day1 << ", "
- << year1 << " and " << Print_Month(month2) << " " << day2 << ", " << year2 << endl;
- }
- Get_Date(fin, fout, month1, day1, year1, valid1, leap1);
- Get_Date(fin, fout, month2, day2, year2, valid2, leap2);
- }
- }
- bool Leap_Year(int year)
- {
- bool leap;
- if (year % 4 == 0)
- {
- leap = true;
- if (year % 100 == 0)
- {
- if (year % 400 != 0)
- {
- leap = false;
- }
- }
- }
- else
- {
- leap = false;
- }
- return leap;
- }
- void Get_Date(ifstream& fin, ofstream& fout, int& month, int& day, int& year, bool& valid, bool& leap)
- {
- fin >> month >> day >> year;
- leap = Leap_Year(year);
- if (year < 1582)
- {
- fout << "Error. Invalid Year. ";
- valid = false;
- }
- if (month < 1 || month > 12)
- {
- fout << "Error. Invalid Month. ";
- valid = false;
- }
- switch (month)
- {
- case 1:
- if (day < 1 || day > 31)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 2:
- if (leap)
- {
- if (day < 1 || day > 29)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- }
- else if (day < 1 || day > 28)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 3:
- if (day < 1 || day > 31)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 4:
- if (day < 1 || day > 30)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 5:
- if (day < 1 || day > 31)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 6:
- if (day < 1 || day > 30)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 7:
- if (day < 1 || day > 31)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 8:
- if (day < 1 || day > 31)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 9:
- if (day < 1 || day > 30)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 10:
- if (day < 1 || day > 31)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 11:
- if (day < 1 || day > 30)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- case 12:
- if (day < 1 || day > 31)
- {
- fout << "Error. Invalid Day. ";
- valid = false;
- }
- break;
- }
- }
- string Print_Month(int month)
- {
- switch (month)
- {
- case 1: return "January";
- break;
- case 2: return "Feburary";
- break;
- case 3: return "March";
- break;
- case 4: return "April";
- break;
- case 5: return "May";
- break;
- case 6: return "June";
- break;
- case 7: return "July";
- break;
- case 8: return "August";
- break;
- case 9: return "September";
- break;
- case 10: return "October";
- break;
- case 11: return "November";
- break;
- case 12: return "December";
- break;
- }
- return "";
- }
- int Convert_to_Julian(int month, int day, bool& leap)
- {
- int counter = 0;
- month--;
- switch (month)
- {
- case 11: counter += 30;
- case 10: counter += 31;
- case 9: counter += 30;
- case 8: counter += 31;
- case 7: counter += 31;
- case 6: counter += 30;
- case 5: counter += 31;
- case 4: counter += 30;
- case 3: counter += 31;
- case 2:
- if (leap)
- {
- counter += 29;
- }
- else
- {
- counter += 28;
- }
- case 1:
- counter += 31;
- break;
- }
- counter += day;
- return counter;
- }
- int Time_Elapsed(int year1, int year2, int julian1, int julian2)
- {
- int num_days = 0, temp = 0;
- if (year1 == year2)
- {
- num_days = abs(julian1 - julian2);
- }
- else
- {
- for (year1; year1 < year2; year1++)
- {
- bool leap = Leap_Year(year1);
- if (leap)
- {
- num_days += 366;
- }
- else
- {
- num_days += 365;
- }
- }
- num_days = num_days - julian1 + julian2;
- }
- return num_days;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement