Другие языки программирования и технологии
помогите решить задачу на c++
Даны два целых числа: D (день) и M (месяц) , определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной.
#include <iostream>
using namespace std;
class date {
public:
date(unsigned short _m, unsigned short _d) : month(_m), day(_d) {
bool valid = true;
if (!month || month > 12) { msgerrmonth(); day = month = 0; valid = false; }
if (!day || day > 31 || (month == 2 && day > 28) || month30days()) { msgerrday(); day = month = 0; valid = false; }
if (!valid) date();
}
bool is_date() { return (month && day? true : false); }
void operator++() { day++; inc(); }
void operator++(int) { ++day; inc(); }
unsigned short get_day() { return day; }
unsigned short get_month() { return month; }
private:
unsigned short month;
unsigned short day;
date() : month(0), day(0) { }
bool month30days() { return ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30? true : false); }
void msgerrmonth() { cout << "\a Error month!" << endl; }
void msgerrday() { cout << "\a Error day!" << endl; }
void inc() {
if (day > 28) {
if (day == 29 && month == 2) {day = 1; month = 3; }
else if (day == 32) { day = 1; ++month; if (month == 13) month = 1; }
else if (month30days()) { day = 1; ++month; }
}
}
};
int main() {
unsigned short d, m;
do {
cout << " Day: "; cin >> d;
cout << " Month: "; cin >> m;
date dt(m, d);
if (dt.is_date()) {
++dt;
d = dt.get_day();
m = dt.get_month();
cout << ' ';
if (d < 10) cout << '0';
cout << d << '/';
if (m < 10) cout << '0';
cout << m << endl;
}
} while (true);
return 0;
}
using namespace std;
class date {
public:
date(unsigned short _m, unsigned short _d) : month(_m), day(_d) {
bool valid = true;
if (!month || month > 12) { msgerrmonth(); day = month = 0; valid = false; }
if (!day || day > 31 || (month == 2 && day > 28) || month30days()) { msgerrday(); day = month = 0; valid = false; }
if (!valid) date();
}
bool is_date() { return (month && day? true : false); }
void operator++() { day++; inc(); }
void operator++(int) { ++day; inc(); }
unsigned short get_day() { return day; }
unsigned short get_month() { return month; }
private:
unsigned short month;
unsigned short day;
date() : month(0), day(0) { }
bool month30days() { return ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30? true : false); }
void msgerrmonth() { cout << "\a Error month!" << endl; }
void msgerrday() { cout << "\a Error day!" << endl; }
void inc() {
if (day > 28) {
if (day == 29 && month == 2) {day = 1; month = 3; }
else if (day == 32) { day = 1; ++month; if (month == 13) month = 1; }
else if (month30days()) { day = 1; ++month; }
}
}
};
int main() {
unsigned short d, m;
do {
cout << " Day: "; cin >> d;
cout << " Month: "; cin >> m;
date dt(m, d);
if (dt.is_date()) {
++dt;
d = dt.get_day();
m = dt.get_month();
cout << ' ';
if (d < 10) cout << '0';
cout << d << '/';
if (m < 10) cout << '0';
cout << m << endl;
}
} while (true);
return 0;
}
Целиком нужно написать? На почту пиши.
Похожие вопросы
- Помогите решить задачи на C#
- Помогите решить задачу (Visual c++)
- Помогите решить задачи по C++
- Помогите решить задачу на C или C++, пожалуйста.
- Помогите решить задачу по C++
- помогите решить задачу математически. C++
- Помогите решить задачу на C++
- Помогите решить задачу на C++. Двумерные массивы.
- Помогите решить задачу по C#
- Помогите решить задачу c#