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