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

DayOfYear Class in C++ GCC Cygwin compile For this assignment, we will be modify

ID: 3886259 • Letter: D

Question

DayOfYear Class in C++ GCC Cygwin compile

For this assignment, we will be modifying the DayOfYear class found in Display 7.1 of the textbook. Specifically, operators will be overloaded. And we will test them out.

Class Requirements:

You may assume that there are 12 months in a year, and every month has 30 days. (360 days in a year). See Extra Credit section below
Use member initialization and constructor delegation when possible
Your program should be const-consistent
Use references for return types and parameters where appropriate
Overload the following operators (Shown using types):

DayOfYear + DayOfYear: Add the months and days, return an object by value
DayOfYear + int: Add an integer amount of days to a DayOfYear object
DayOfYear - DayOfYear: Return the number of days between the two dates. You should only perform the subtraction if the left operand is greater than the right operand.
-DayOfYear: Return the end of the year minus the DayOfYear object. So, instead of a date so many days into the year, it is a date so many days from the end of the year
DayOfYear == DayOfYear: Returns boolean
DayOfYear < DayOfYear: Returns boolean
DayOfYear > DayOfYear: Returns boolean
++DayOfYear: Increments by one day. Returns modified DayOfYear by reference
DayOfYear++: Increments by one day. Returns old value of DayOfYear object
--DayOfYear and DayOfYear--: Similar implementations to ++DayOfYear and DayOfYear++
<<: Replaces the output() function
>>: Replaces the input() function, acceptable inputs should be only of the formats: mm/dd, m/dd, mm/d, m/d
DayOfYear[int]: Returns a read-only data member according to the table below
In order to ensure all implementations of overloading are attempted, the subtraction operator must be implemented as a non-member, non-friend function

Overloaded [ ] Indices

Index

Returns

1

month

2

day

3

day of year (e.g., February 2 would return 33)

anything else

-1

main.cpp Requirements:

Declare four (4) DayOfYear objects. Be sure to utilize each constructor at least once
Perform each arithmetic and comparitive operation as many times as necessary to demonstrate that they work. For example, == should be tested twice, to ensure it can return TRUE when two dates are the same, and false otherwise
While performing these operations, test that you roll over into a different month or year the way you should. Rolling over into a different year simply means the day after Dec. 30 is Jan. 1 and vice versa
Print dates using << and change the date of all four (4) objects with >>, once for each acceptable date format. Then print the changed dates

Reminders:

Some operators must be implemented as member functions, and some others must be implemented as friend functions
Be mindful of your date moving into the next or previous months, and also the rollover for the year as well
Place comments only where necessary

Your code should speak for itself
Choose good names
Comments should be succinct, and placed only where you think an extra explanation is needed (i.e., Don’t tell me you’re declaring variables. I can see that you are declaring variables; I also know how to code)

Short comments pointing out where you are fulfilling requirements in your main function are encouraged

Use proper style for your code. If in doubt, refer to the handouts on Blackboard. There is no one right way, but there are lots of wrong ways

Preparing and Submitting:

Your code must be able to compile and run on the EECS Linux Lab servers
You are submitting C++ code. Any headers should have the file extension .hpp
Your submission must include a makefile
Submit ONLY source files and a makefile
Design your makefile so that the final executable is called hw01
Program compilation and execution for grading will be conducted in the following manner:

$ make

$ hw01 < infile > outfile

Homework submission will be handled exclusively through the handin tool in the Linux Lab. You may submit your homework using the following command:

~cs411/bin/handin 1 FILE1 FILE2 ...

Extra Credit:

To earn up to 110% on this assignment:

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.

Here is what I have from the book.

#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)

{ }

DayOfYear::DayOfYear(int month)

{ }

DayOfYear::DayOfYear()

{ }

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);

}

Explanation / Answer

the code is correct

#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)
{ }
DayOfYear::DayOfYear(int month)
{ }
DayOfYear::DayOfYear()
{ }
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);
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote