Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

reshenie_zadachi_13

Задача 13

Задача 13: Создайте класс, который будет содержать информацию о дате (день, месяц, год). С помощью механизма перегрузки операторов, определите операцию разности двух дат (результат в виде количества дней между датами), а также операцию увеличения даты на определенное количество дней.

/* 
 * Created on January 12, 2011, 11:38 AM
 */

#include <cstdlib>
#include <iostream>
#include <ctime>
#include <cstdio>

using namespace std;

class myClassDate {
    struct tm *initime;
    time_t rawtime;
    struct mydate {
        int my_day;
        int my_mon;
        int my_year;
    } myinitdate;
public:
    myClassDate();//конструктор
    myClassDate(const myClassDate &c){};//конструктор копирования
    ~myClassDate(){};//деструктор
    myClassDate operator-(const myClassDate &N)
    {
	myClassDate temp;
        temp.myinitdate.my_day=myinitdate.my_day-N.myinitdate.my_day;
	//temp.dig=dig-N.dig;
	return temp;
	}

    void printdate(){cout<<myinitdate.my_day<<myinitdate.my_mon<<myinitdate.my_year<<"\n"; };
    void addday(int days);
};

myClassDate::myClassDate() {
    rawtime = time (NULL);
    initime = localtime (&rawtime);
    myinitdate.my_day=initime->tm_mday;
    myinitdate.my_mon=initime->tm_mon;
    myinitdate.my_year=initime->tm_year;
}
void myClassDate::addday(int days) {
    if (myinitdate.my_day+days>31) cout<<"Error! myinitdate.my_day+days>31"<<"\n";
    else myinitdate.my_day+=days;
}

int main(int argc, char** argv) {
    myClassDate A,B,C;
    A.printdate();
    A.addday(40); //Error
    A.addday(5);
    A.printdate();
       //разность двух дат
    B.printdate();
    C=A-B;
    C.printdate();

    return (EXIT_SUCCESS);
}

reshenie_zadachi_13.txt · Последние изменения: 2011/01/12 13:44 (внешнее изменение)