面向对象的程序第三次实验作业

第一题

#include <bits/stdc++.h>

using namespace std;

class Point {
public:
    Point(int xx = 0, int yy = 0) {
        setX(xx);
        setY(yy);
    }
    void setX(int xx) { 
        x = xx;
    }
    int getX() {
        return x;
    }
    void setY(int yy) { 
        y = yy;
    }
    int getY() {
        return y;
    }
    void print() {
        cout << "  (" << x << "," << y << ")";
    }
    void moveRight(int offset) {
        x += offset;
    }
    void moveDown(int offset) {
        y += offset;
    }
private:
    int x;
    int y;
};

int main () {
    int x, y;
    cout << "Please input a point:";
    cin >> x >> y;
    cout << x <<endl;
    Point p1(x, y);
    cout << "Point p1:";
    p1.print();
    cout << endl;
    Point p2(x * 2, y * 2);
    cout << "Point p2:";
    p2.print();
    cout << endl;
    p1.moveRight(10);
    cout << "After moving right, p1:";
    p1.print();
    cout << endl;
    p2.moveDown(-10);
    cout << "After moving down, p2:";
    p2.print();
    cout << endl;
    return 0;
}

 第二题

#include <bits/stdc++.h>

using namespace std;

bool isleap(int year) {
    bool flag = 0;
    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
        flag = 1;
    return flag;
}

int mon[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

class Date
{
public:
    Date(int year = 1990, int month = 1, int day = 1) {
        setYear(year);
        setMonth(month);
        setDay(day);
    }
    void setDate(int year_, int month_, int day_) {
        year = year_;
        month = month_;
        day = day_;
    }
    void setYear(int year_) {
        year = year_;
    }
    int getYear() {
        return year;
    }    
    void setMonth(int month_) {
        month = month_;
    }
    int getMonth() {
        return month;
    }
    void setDay(int day_) {
        day = day_;
    }
    int getDay() {
        return day;
    }
    void setSeparator(char separator_ = '-') {
        separator = separator_;
    }

    char getSeparator() {
        return separator;
    }

    void printFullYear() {
        if (getMonth() > 10)
            cout << getYear() << getSeparator() << getMonth() << getSeparator() << getDay() << endl;
        else
            cout << getYear() << getSeparator() << 0 << getMonth() << getSeparator() << getDay() << endl;
    }

    void printStandardYear() {
        if (getMonth() > 10)
            cout << getYear() % 100 << getSeparator() << getMonth() << getSeparator() << getDay() << endl;
        else
            cout << getYear() << getSeparator() << 0 << getMonth() << getSeparator() << getDay() << endl;
    }

    int fullYearsTo(int year_, int month_, int day_) {
        int ans = year_ - year;
        if(month_ < month)
            ans--;
        else if (day_ < day)
            ans--;
        // cout << ans << ',' << "满" << ans << "岁" << endl;
        return ans;
    }

    int daysTo(int year_, int month_, int day_) {
        if (year_ > year) {
            int ans = 0;
            for (int i = getYear() + 1; i < year_; ++i) {
                ans += 365;
                if(isleap(i))
                    ans++;
            }
            for (int i = 1; i < month_; ++i) {
                ans += mon[i - 1];
            }
            for (int i = 12; i > month; --i) {
                ans += mon[i - 1];
            }
            if(isleap(year_) && month_ > 2)
                ans++;
            if(isleap(year) && month < 3)
                ans++;
            ans += day_;
            ans += mon[month] - day + 1;
            return ans;
        }
        else {
            int ans = 0;
            for (int i = year_ + 1; i < getYear(); ++i) {
                ans += 365;
                if(isleap(i))
                    ans++;
            }
            for (int i = 1; i < month; ++i) {
                ans += mon[i - 1];
            }
            for (int i = 12; i > month_; --i) {
                ans += mon[i - 1];
            }
            if(isleap(year) && month > 2)
                ans++;
            if(isleap(year_) && month_ < 3)
                ans++;
            ans += day;
            ans += mon[month_] - day_ + 1;
            return -ans;
        }
        
        // cout << -ans << "," << "共和国比我早诞生了" << ans << "天" << endl;
    }
private:
    int year;
    int month;
    int day;
    char separator = '-';
};

int main () {
    Date birthDate(1969, 8, 11);
    birthDate.printFullYear();
    birthDate.printStandardYear();
    birthDate.setSeparator('/');
    birthDate.printFullYear();

    cout << birthDate.fullYearsTo(2010, 4, 15);
    cout << "," << "满四十岁" << endl;

    cout << birthDate.daysTo(2010, 4, 15) << endl;
    cout << birthDate.daysTo(1949, 10, 1);
    cout << "," << "共和国比我早诞生了" << -birthDate.daysTo(1949, 10, 1) << "天" << endl;
    return 0;
}

 

posted @ 2019-03-26 22:58  LightAc  阅读(301)  评论(0编辑  收藏  举报
返回顶端