주요 기능을 살펴보면 "월요일"을 내 setDay 공용 기능에 하드 코딩 한 것을 볼 수 있습니다. (setDay에서와 마찬가지로) C 문자열을 사용하여 요일을 잡는 것이 쉽지만, "월요일"로 설정 한 날에 n을 추가하도록 사용자에게 요청하는 방법은 무엇입니까? "목요일"? typdef 열거 {INVALID, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일은} 9 0 및/또는 10화요일 + 3 = 금요일? C++ 프로그래밍 문제
#include <iostream>
using std::cout;
using std::endl;
class DayOfTheWeek //class is encapsulation of functions and members that manipulate the data.
{
public:
DayOfTheWeek(); // Constructor
virtual ~DayOfTheWeek(); // Destructor
void setDay(const char * day); // Function to set the day
void printDay() const; // Function to Print the day.
const char * getDay() const; // Function to get the day.
const char * plusOneDay(); // Next day function
const char * minusOneDay(); // Previous day function
const char * addDays(int addValue); // function that adds days based on parameter value
private:
char * day; // variable for the days of the week.
};
DayOfTheWeek::DayOfTheWeek() : day(0)
{
// Usually I would allocate pointer member variables
// Here in the construction of the Object
}
const char * DayOfTheWeek::getDay() const
{
return day; // we can get the day simply by returning it.
}
const char * DayOfTheWeek::minusOneDay()
{
if (strcmp(day, "Monday") == 0)
{
cout << "The day before " << day << " is ";
return "Sunday";
}
else if (strcmp(day, "Tuesday") == 0)
{
cout << "The day before " << day << " is ";
return "Monday";
}
else if (strcmp(day, "Wednesday") == 0)
{
cout << "The day before " << day << " is ";
return "Tuesday";
}
else if (strcmp(day, "Thursday") == 0)
{
cout << "The day before " << day << " is ";
return "Wednesday";
}
else if (strcmp(day, "Friday") == 0)
{
cout << "The day before " << day << " is ";
return "Thursday";
}
else if (strcmp(day, "Saturday") == 0)
{
cout << "The day before " << day << " is ";
return "Friday";
}
else if (strcmp(day, "Sunday") == 0)
{
cout << "The day before " << day << " is ";
return "Saturday";
}
else
{
cout << "'" << day << "'";
return "is an invalid day of the week!";
}
}
const char * DayOfTheWeek::plusOneDay()
{
if (strcmp(day, "Monday") == 0)
{
cout << "The day after " << day << " is ";
return "Tuesday";
}
else if (strcmp(day, "Tuesday") == 0)
{
cout << "The day after " << day << " is ";
return "Wednesday";
}
else if (strcmp(day, "Wednesday") == 0)
{
cout << "The day after " << day << " is ";
return "Thursday";
}
else if (strcmp(day, "Thursday") == 0)
{
cout << "The day after " << day << " is ";
return "Friday";
}
else if (strcmp(day, "Friday") == 0)
{
cout << "The day after " << day << " is ";
return "Saturday";
}
else if (strcmp(day, "Saturday") == 0)
{
cout << "The day after " << day << " is ";
return "Sunday";
}
else if (strcmp(day, "Sunday") == 0)
{
cout << "The day after " << day << " is ";
return "Monday";
}
else
{
cout << "'" << day << "'";
return " is an invalid day of the week!";
}
}
const char * DayOfTheWeek::addDays(int addValue)
{
if (addValue < 0)
{
if (strcmp(day, "Monday") == 0)
{
cout << day << " - " << -addValue << " = ";
return "Friday";
}
else if (strcmp(day, "Tuesday") == 0)
{
cout << day << " - " << -addValue << " = ";
return "Saturday";
}
else if (strcmp(day, "Wednesday") == 0)
{
cout << day << " - " << -addValue << " = ";
return "Sunday";
}
else if (strcmp(day, "Thursday") == 0)
{
cout << day << " - " << -addValue << " = ";
return "Monday";
}
else if (strcmp(day, "Friday") == 0)
{
cout << day << " - " << -addValue << " = ";
return "Tuesday";
}
else if (strcmp(day, "Saturday") == 0)
{
cout << day << " - " << -addValue << " = ";
return "Wednesday";
}
else if (strcmp(day, "Sunday") == 0)
{
cout << day << " - " << -addValue << " = ";
return "Thursday";
}
else
{
cout << "'" << day << "' ";
return "is an invalid day of the week! ";
}
}
else // if our parameter is greater than 0 (positive)
{
if (strcmp(day, "Monday") == 0)
{
cout << day << " + " << addValue << " = ";
return "Thursday";
}
else if (strcmp(day, "Tuesday") == 0)
{
cout << day << " + " << addValue << " = ";
return "Friday";
}
else if (strcmp(day, "Wednesday") == 0)
{
cout << day << " + " << addValue << " = ";
return "Saturday";
}
else if (strcmp(day, "Thursday") == 0)
{
cout << day << " + " << addValue << " = ";
return "Sunday";
}
else if (strcmp(day, "Friday") == 0)
{
cout << day << " + " << addValue << " = ";
return "Monday";
}
else if (strcmp(day, "Saturday") == 0)
{
cout << day << " + " << addValue << " = ";
return "Tuesday";
}
else if (strcmp(day, "Sunday") == 0)
{
cout << day << " + " << addValue << " = ";
return "Wednesday";
}
else
{
cout << "'" << day << "' ";
return "is an invalid day of the week! ";
}
}
}
void DayOfTheWeek::printDay() const
{
cout << "The Value of the " << day;
}
void DayOfTheWeek::setDay(const char * day)
{
if (day)
{// Here I am allocating the object member char day pointer
this->day = new char[strlen(day)+1];
size_t length = strlen(day)+1; // +1 for trailing null char
strcpy_s(this->day , length , day); // copying c-strings
}
else day = NULL; // If their was a problem with the parameter 'day'
}
DayOfTheWeek::~DayOfTheWeek()
{
delete day; // Free the memory allocated in SetDay
}
int main()
{
DayOfTheWeek MondayObject; // declare an object
MondayObject.setDay("Monday"); // Call our public function 'setDay' to set a day of the week
MondayObject.printDay(); // Call our public function 'printDay' to print the day we set
cout << " object is " << MondayObject.getDay() << endl; // Print the value of the object
cout << MondayObject.plusOneDay() << endl;
cout << MondayObject.minusOneDay() << endl;
cout << MondayObject.addDays(3) << endl;
MondayObject.printDay();
cout << " object is still " << MondayObject.getDay() << endl; // Print the value of the object
cout << MondayObject.addDays(-3) << endl;
return 0;
}
, 당신이 DayOfTheWeek을 가지고 귀찮게 거라면 클래스의 경우 요일을 반환하는 메서드는 해당 인스턴스를 반환해야합니다. 물론 해결책은 아닙니다. –
'%'에 대해 들어 본 적이 있습니까? (예 :'토요일 (5) + 3 -> 화요일 (1)')은 ((5 + 3) % 7) -> 1)' –
으로 작동합니다. 숙제 문제? –