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

Создать класс Date для работы с датами в формате "год.месяц.день" / C++ для начинающих - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка при обращении к методу константного объекта http://www.cyberforum.ru/cpp-beginners/thread1135740.html
Есть некий класс, в нем есть метод const size_t Length(); пишу оператор сложения Class& operator + (const Class& Val) { if (Val.Length() == 0) return *this; .....} получаю ошибку: error C2662: const size_t Class::Length(void): невозможно преобразовать указатель "this" из "const Class" в "Class &" что я делаю не так? напрашивается конечно вариант: Class& operator + (Class& Val). но к...
C++ Реализовать метод summa () для вычисление денежной суммы Поле first — целое положительное число, номинал купюры; номинал может принимать значения 1, 2, 5, 10, 50, 100, 500. Поле second — целое положительное число, количество купюр данного достоинства. Реализовать метод summa () — вычисление денежной суммы. http://www.cyberforum.ru/cpp-beginners/thread1135738.html
C++ Заполнить двумерный массив размером n*n единицами и нулями как на шахматной доске
Заполнить двумерный массив размером n*n единицами и нулями таким образом, чтобы единицы размещались так, как размещаются на шахматной доске черные поля, а нули-как белые поля. Левое нижнее поле на шахматной доске всегда черное.
C++ Дан массив целых чисел. Верно ли, что сумма квадратов элементов массива есть пятизначное число
дан массив целых чисел. Верно ли, что сумма квадратов элементов массива есть пятизначное число.
C++ Составить программу поиска четырёхзначных чисел, которые при делении на 133 дают в остатке 125, а при делении на 134 да http://www.cyberforum.ru/cpp-beginners/thread1135724.html
Составить программу поиска четырёхзначных чисел, которые при делении на 133 дают в остатке 125, а при делении на 134 дают в остатке 111.
C++ Определить пересекаются ли две прямые, заданные своими уравнениями на плоскости Определить пересекаются ли две прямые, заданными своими уравнениями на плоскости. Если они пересекаются установить координаты точки пересечения. подробнее

Показать сообщение отдельно
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
01.04.2014, 14:22     Создать класс Date для работы с датами в формате "год.месяц.день" / C++ для начинающих
Для начала как то так
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
112
113
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <cmath>
 
namespace cforum
{
    struct elemDate
    {
        size_t day;
        size_t month;
        size_t year;
    };
 
    class Date
    {
        private:
            elemDate date;
        public:
            Date(size_t y = 1969,size_t m = 1,  size_t d = 1)
            {
                date.year = y;
                date.month = m;
                date.day = d;
            }
            Date(std::string str)
            {
                std::vector<std::string> result;
                  size_t pos = 0;
                  while (1)
                  {
                    size_t end = str.find('.', pos);
                    if (end == str.npos)
                    {
                      result.push_back(str.substr(pos));
                      break;
                    }
                    else
                    {
                      result.push_back(str.substr(pos, end - pos));
                      pos = end + 1;
                    }
                  }
                  date.year = atoi(result[0].c_str());
                  date.month = atoi(result[1].c_str());
                  date.day = atoi(result[2].c_str());
            }
            Date(const Date & d)
            {
                date.year = d.getElemDate().year;
                date.month = d.getElemDate().month;
                date.day = d.getElemDate().day;
            }
 
            elemDate getElemDate()const { return date; }
            size_t getYear()const { return date.year; }
            size_t getMonth()const { return date.month; }
            size_t getDay()const { return date.day; }
            void setYear(size_t y){ date.year = y; }
            void setMonth(size_t m){ date.month = m; }
            void setDay(size_t d){ date.day = d; }
 
            bool isLeapYear()
            {
              if(date.year % 100 == 0)
              {
                 if(date.year % 4 == 0 || date.year % 400 == 0)
                    return  true;
                return false;
              }
 
            }
 
            bool operator ==(Date & d)const
            {
                return date.year == d.getYear() && date.month == d.getMonth() && date.day == d.getDay();
            }
 
            bool operator !=(Date & d)const
            {
                return date.year != d.getYear() && date.month != d.getMonth() && date.day != d.getDay();
            }
 
            Date getDiffDate(Date & d)
            {
                return Date(std::abs(date.year - d.getYear()), std::abs(date.month - d.getMonth()), std::abs(date.day - d.getDay()));
            }
            Date operator +(const Date & d)
            {
                //сами
                return Date();
            }
            Date  operator -(size_t day)
            {
                //сами
                return Date();
            }
            size_t operator -(Date & d)
            {
                //сами
                return date.day;
            }
    };
}
 
int main()
{
    cforum::Date d;
    std::cout << d.getDay() << ':' << d.getMonth() << ':' << d.getYear() << std::endl;
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru