Форум программистов, компьютерный форум CyberForum.ru

Класс даты - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Загрузить процесс из другого процесса http://www.cyberforum.ru/cpp-beginners/thread647477.html
Штурм google ничего не дал. Но я помню что что то было такое в книге Рихтера. Пока ищу книгу и нужную страницу, решил оформить все таки вопрос, ведь возможно не только у меня но и у кого то в будущем возникнет такой вопрос. Идея заключается вот в чем. 1). Программка №1- оболочка с красивым интерфейсом принимающая что то и по нажатию кнопки Start записывает в файл принятое и из другого файла ...
C++ Найти сумму элементов матрицы в строках с отрицательным элементом на главной диагонали Дана вещественная прямоугольная матрица. Найти сумму элементов в строках с отрицательным элементом на главной диагонали. Если сумма больше 0, то элементы последней строки возвести в квадрат. Помогите пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread647463.html
C++ Вычислить методом Ньютона корень уравнения
Помогите, пожалуйста, написать программу, вычисляющую методом Ньютона: sinx - x + 0,5 = 0, интервал изоляции корня .
Массив из рандомов C++
Существует массив, его нужно заполнить рандомными цифрами от 1 до 36, так, чтобы цифры не повторялись: сам дошел до вот такого: #include "iostream" #include "cstdio" #include "cstdlib" using namespace std; int main() {
C++ Заполнение матрицы числами от 1 до n по спирали http://www.cyberforum.ru/cpp-beginners/thread647432.html
заполнение матрици по спирали, числами от 1 до n (квадрат) ну, уменя есть код ко второй но я не знаю нормально или нет)
C++ Проверка матрицы на симетричность относительно побочной диагонали проверка матрици на симетричность относительно побочной диагонали? подробнее

Показать сообщение отдельно
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
06.09.2012, 18:32     Класс даты
Хорошо, сейчас напишу.

Добавлено через 33 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//CompressedDate.h:
#ifndef COMPRESSED_DATE_H
#define COMPRESSED_DATE_H
 
#   include <fstream>
 
    class CompressedDate {
        unsigned day: 5;
        unsigned month: 4;
        unsigned year: 23;
    public:
        enum Month { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };
 
        CompressedDate() {
            day = 1;
            month = JAN;
            year = 1970;
        }
 
        CompressedDate(int d, Month m, int y) {
            day = d;
            month = m;
            year = y;
        }
 
        //Конструктор копирования подойдет и неявный
 
        //Деструктор тоже
 
        int getDay() const { return day; }
        int getMonth() const { return month; }
        int getYear() const { return year; }
 
        int setDay(int d) { return day = d; }
        int setMonth(Month m) { return month = m; }
        int setYear(int y) { return year = y; }
 
        bool isLeapYear() const;
        int daysInMonth() const;
 
        bool operator<(const CompressedDate&) const;
        bool operator>(const CompressedDate&) const;
        bool operator==(const CompressedDate&) const;
        bool operator!=(const CompressedDate& d) const {
            return !(*this == d);
        }
 
        CompressedDate& operator++();
        CompressedDate& operator--();
        CompressedDate operator++(int);
        CompressedDate operator--(int);
 
        static CompressedDate getCurrentDate();
    };
 
    std::ostream& operator<<(std::ostream&, const CompressedDate&);
    std::istream& operator>>(std::istream&, CompressedDate&);
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//CompressedDate.cpp:
#include <ctime>
#include <iomanip>
#include "CompressedDate.h"
 
using namespace std;
 
bool CompressedDate::isLeapYear() const {
    return !(year & 3);
}
 
bool CompressedDate::operator<(const CompressedDate& d) const {
    if (year != d.year)
        return year < d.year;
    if (month != d.month)
        return month < d.month;
    return day < d.day;
}
 
bool CompressedDate::operator>(const CompressedDate& d) const {
    if (year != d.year)
        return year > d.year;
    if (month != d.month)
        return month > d.month;
    return day > d.day;
}
 
bool CompressedDate::operator==(const CompressedDate& d) const {
    return day == d.day && month == d.month && year == d.year;
}
 
int CompressedDate::daysInMonth() const {
    switch (month) {
    case FEB:
        return 28 + isLeapYear();
 
    case APR: case JUN:
    case SEP: case NOV:
        return 30;
 
    default:
        return 31;
    }
}
 
CompressedDate CompressedDate::getCurrentDate() {
    CompressedDate result;
    time_t timestamp;
    time(&timestamp);
    tm* ptm = gmtime(&timestamp);
    result.day = ptm->tm_mday;
    result.month = ptm->tm_mon + 1;
    result.year = ptm->tm_year + 1900;
    return result;
}
 
CompressedDate& CompressedDate::operator++() {
    if (day == daysInMonth()) {
        if (month == DEC) {
            year++;
            month = JAN;
        } else
            month++;
        day = 1;
    } else
        day++;
    return *this;
}
 
CompressedDate& CompressedDate::operator--() {
    if (day == 1) {
        if (month == JAN) {
            year--;
            month = DEC;
        } else
            month--;
        day = daysInMonth();
    } else
        day--;
}
 
CompressedDate CompressedDate::operator++(int) {
    CompressedDate temp(*this);
    ++*this;
    return temp;
}
 
CompressedDate CompressedDate::operator--(int) {
    CompressedDate temp(*this);
    --*this;
    return temp;
}
 
ostream& operator<<(ostream& os, const CompressedDate& date) {
    return os << setfill('0')
        << setw(2) << date.getDay() << '.'
        << setw(2) << date.getMonth() << '.'
        << setw(4) << date.getYear()
        << setfill(' ');
}
 
istream& operator>>(istream& is, CompressedDate& d) {
    int temp;
    (is >> temp).get();
    d.setDay(temp);
    (is >> temp).get();
    d.setMonth((CompressedDate::Month)temp);
    is >> temp;
    d.setYear(temp);
    return is;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//main.cpp:
#include <cstdlib>
#include <iostream>
#include "CompressedDate.h"
 
using namespace std;
 
int main() {
    CompressedDate d(30, CompressedDate::SEP, 2011); // к-р с параметрами
    CompressedDate ds(30, CompressedDate::SEP, 2011); // к-р с параметрами
    CompressedDate d2(20, CompressedDate::SEP, 2099); // к-р с параметрами
 
    cout << "Function > :" << endl;
    if (d > d2)
        cout << d;
    else
        cout << d2;
    cout << endl << endl;
 
    cout << "Function < :" << endl;
    if (d < d2)
        cout << d;
    else
        cout << d2;
    cout << endl << endl;
 
    cout << "Function == :" << endl;
    if(d == ds)
        cout << "TRUE";
    else
        cout << "FALSE";
    cout << endl << endl;
 
    cout << "Function != :" << endl;
    if(d != ds)
        cout << "TRUE";
    else
        cout << "False";
    cout << endl << endl;
 
    cout << "Function ++X :" << endl;
    ++d;
    cout << d;
    cout << endl << endl;
 
    //Извините, но это какая-то хрень. Последние два инкремента применяются
    //к временным объектам. Было бы логичнее тестировать ++(++(++d));
    cout << "Function ((X++)++)++ :" << endl;
    ((d++)++)++;
    cout << d;
    cout << endl << endl;
 
    cout << "Function ((X++)++)++ :" << endl;
    ((d++)++)++;
    cout << d;
    cout << endl << endl;
 
    cout << "Function --X :" << endl;
    --d;
    cout << d;
    cout << endl << endl;
 
    cout << "Function ((X--)--)-- :" << endl;
    ((d--)--)--;
    cout << d;
    cout << endl << endl;
 
    cout << "Function ((X--)--)-- :" << endl;
    ((d--)--)--;
    cout << d;
    cout << endl << endl;
 
    cout << "Enter date in format dd.mm.yyyy: ";
    cin >> d;
    cout << d;
    cout << endl << endl;
 
    system("PAUSE");
 
    return 0;
}
Добавлено через 7 минут
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
(компилятор все равно округлит до целого числа байт)
Прошу прощения, ошибся. Компилятор округляет размер до числа, кратного sizeof(int).
 
Текущее время: 15:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru