Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Here is what I have so far in C++. Any help please? #include <iostream> #include

ID: 3888134 • Letter: H

Question

Here is what I have so far in C++. Any help please?

#include <iostream>
#include <cstdlib>
#include <cmath>

class DayOfYear
{
private:
int month;
int day;
void testDate();
public:
DayOfYear(int month, int day);
DayOfYear(int month);
DayOfYear();
void input();
void output();
int getMonthNumber();
int getDay();
};

const DayOfYear operator +(const DayOfYear& date1, const DayOfYear& date2); //addition
const DayOfYear operator -(const DayOfYear& date1, const DayOfYear& date2); //subtraction
bool operator ==(const DayOfYear& date1, const DayOfYear& date2); //compare
const DayOfYear operator -(const DayOfYear& date1, const DayOfYear date2); //negation
const DayOfYear operator >(const DayOfYear& date1, const DayOfYear date2); //greater
const DayOfYear operator <(const DayOfYear& date1, const DayOfYear date2); //lesser

int main()
{
DayOfYear date_add;
DayOfYear date_subtract;
DayOfYear date_comparison;
DayOfYear date_equality;

date_add.input();

//test
std::cout << date_add.getDay() << std::endl;

system("pause");   

  

//windows pause (comment out for linux)

return 0;
}

DayOfYear::DayOfYear(int month, int day)
{
this.month=month;
this.day=day;
}

DayOfYear::DayOfYear(int month)
{
this.month=month;
}

DayOfYear::DayOfYear()
{
month=1;
day=1;
}

void DayOfYear::input()
{
std::cout << "Enter the month as a number: ";
std::cin >> month;
std::cout << "Enter the day of the month: ";
std::cin >> day;

testDate();
}

void DayOfYear::output()
{
switch (month) {
case 1:
std::cout << "January ";
break;
case 2:
std::cout << "February ";
break;
case 3:
std::cout << "March ";
break;
case 4:
std::cout << "April ";
break;
case 5:
std::cout << "May ";
break;
case 6:
std::cout << "June ";
break;
case 7:
std::cout << "July ";
break;
case 8:
std::cout << "August ";
break;
case 9:
std::cout << "September ";
break;
case 10:
std::cout << "October ";
break;
case 11:
std::cout << "November ";
break;
case 12:
std::cout << "December ";
break;
default:
std::cout << "Error in DayOfYear::output.";
}
std::cout << day;
}

int DayOfYear::getMonthNumber()
{
return month;
}

int DayOfYear::getDay()
{
return day;
}

void DayOfYear::testDate()
{
if (month < 1 || month > 12)
{
std::cout << "Illegal month value! ";

system("pause");   

  

//windows pause for testing (comment out for linux)

exit(1);
}
if (day < 1 || day > 30)
{
std::cout << "Illegal day value! ";

system("pause");   

  

//windows pause for testing (comment out for linux)

exit(1);
}
}

const DayOfYear operator +(const DayOfYear& date1, const DayOfYear& date2) //WIP
{
int total_days = (date1.getMonthNumber()*30) + date2.getDay();

//testing

int var_month = total_days / 30;
int var_day = total_days % 30;

return DayOfYear(var_month, var_day);
}

const DayOfYear operator -(const DayOfYear& date1, const DayOfYear& date2) //WIP
{
int sub_days = (date1.getMonthNumber()*30) - date2.getDay();   

//testing

int var_month = total_days / 30;
int var_day = total_days % 30;

return DayOfYear(var_month, var_day);
}

bool operator ==(const DayOfYear& date1, const DayOfYear& date2)
{
if(date1.getMonthNumber()==date2.getMonthNumber() &&
   return(1);
else
   return(0);
}

const DayOfYear operator >(const DayOfYear& date1, const DayOfYear date2)
{
if(date1.getMonthNumber()>date2.getMonthNumber() && date1.getDay()>date2.getDay())
   return(date1);
else
   return(date2);
}

const DayOfYear operator <(const DayOfYear& date1, const DayOfYear date2)
{
if(date1.getMonthNumber()<date2.getMonthNumber() && date1.getDay()<date2.getDay())
   return(date1);
else
   return(date2);
}
}

Create the program as described, except use a true 365 day calendar. February should only have 28 days; there is no need to account for a leap year

Explanation / Answer

#include <iostream>
#include <cstdlib>
#include <cmath>

class DayOfYear
{
private:
int month;
int day;
void testDate();
public:
DayOfYear(int month, int day);
DayOfYear(int month);
DayOfYear();
void input();
void output();
int getMonthNumber();
int getDay();
};

const DayOfYear operator +(const DayOfYear& date1, const DayOfYear& date2); //addition
const DayOfYear operator -(const DayOfYear& date1, const DayOfYear& date2); //subtraction
bool operator ==(const DayOfYear& date1, const DayOfYear& date2); //compare
const DayOfYear operator -(const DayOfYear& date1, const DayOfYear date2); //negation
const DayOfYear operator >(const DayOfYear& date1, const DayOfYear date2); //greater
const DayOfYear operator <(const DayOfYear& date1, const DayOfYear date2); //lesser

int main()
{
DayOfYear date_add;
DayOfYear date_subtract;
DayOfYear date_comparison;
DayOfYear date_equality;

date_add.input();

//test
std::cout << date_add.getDay() << std::endl;

system("pause");   

  

//windows pause (comment out for linux)

return 0;
}

DayOfYear::DayOfYear(int month, int day)
{
this.month=month;
this.day=day;
}

DayOfYear::DayOfYear(int month)
{
this.month=month;
}

DayOfYear::DayOfYear()
{
month=1;
day=1;
}

void DayOfYear::input()
{
std::cout << "Enter the month as a number: ";
std::cin >> month;
std::cout << "Enter the day of the month: ";
std::cin >> day;
DayOfYear::DayOfYear(int month, int day)
{
this.month=month;
this.day=day;
}

DayOfYear::DayOfYear(int month)
{
this.month=month;
}

DayOfYear::DayOfYear()
{
month=1;
day=1;
}


testDate();
}

void DayOfYear::output()
{
switch (month) {
case 1:
std::cout << "January ";
break;
case 2:
std::cout << "February ";
break;
case 3:
std::cout << "March ";
break;
case 4:
std::cout << "April ";
break;
case 5:
std::cout << "May ";
break;
case 6:
std::cout << "June ";
break;
case 7:
std::cout << "July ";
break;
case 8:
std::cout << "August ";
break;
case 9:
std::cout << "September ";
break;
case 10:
std::cout << "October ";
break;
case 11:
std::cout << "November ";
break;
case 12:
std::cout << "December ";
break;
default:
std::cout << "Error in DayOfYear::output.";
}
std::cout << day;
}

int DayOfYear::getMonthNumber()
{
return month;
}

int DayOfYear::getDay()
{
return day;
}

void DayOfYear::testDate()
{
if (month < 1 || month > 12)
{
std::cout << "Illegal month value! ";

system("pause");   

  

//windows pause for testing (comment out for linux)

exit(1);
}
if (day < 1 || day > 30)
{
std::cout << "Illegal day value! ";

system("pause");   

  

//windows pause for testing (comment out for linux)

exit(1);
}
}

const DayOfYear operator +(const DayOfYear& date1, const DayOfYear& date2) //WIP
{
int total_days = (date1.getMonthNumber()*30) + date2.getDay();

//testing

int var_month = total_days / 30;
int var_day = total_days % 30;

return DayOfYear(var_month, var_day);
}

const DayOfYear operator -(const DayOfYear& date1, const DayOfYear& date2) //WIP
{
int sub_days = (date1.getMonthNumber()*30) - date2.getDay();   

//testing

int var_month = total_days / 30;
int var_day = total_days % 30;

return DayOfYear(var_month, var_day);
}

bool operator ==(const DayOfYear& date1, const DayOfYear& date2)
{
if(date1.getMonthNumber()==date2.getMonthNumber() &&
   return(1);
else
   return(0);
}

const DayOfYear operator >(const DayOfYear& date1, const DayOfYear date2)
{
if(date1.getMonthNumber()>date2.getMonthNumber() && date1.getDay()>date2.getDay())
   return(date1);
else
   return(date2);
}

const DayOfYear operator <(const DayOfYear& date1, const DayOfYear date2)
{
if(date1.getMonthNumber()<date2.getMonthNumber() && date1.getDay()<date2.getDay())
   return(date1);
else
   return(date2);
}
}