Другие языки программирования и технологии

помогите решить задачу на 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;
}
Андрей Фролов
Андрей Фролов
98 770
Лучший ответ
Целиком нужно написать? На почту пиши.