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

Как в С++ записываються промежутки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка контсруктора http://www.cyberforum.ru/cpp-beginners/thread587727.html
Перегрузить конструктор в проге. помогите плс вообще не знаю как #include <iostream> #include <math.h> #include <conio.h> #include <iomanip> using namespace std; struct koord{double x,y,z;};...
C++ Зачем нужен стек и очередь Не как не могу понять примение стека и очереди. Может кто то объясните зачем они нужны? я знаю как они работают, как простотой код для стека написать, а примение не могу понять http://www.cyberforum.ru/cpp-beginners/thread587712.html
C++ Ошибка с выводом в консоль
Добрый день столкнулся с такой проблемой в с++ 2008; #include "stdafx.h" int _tmain(int argc, _TCHAR* argv) { int i, c, k; for (i = 1; i <= 10; i++ ) {
C++ Массивы, матрицы
1.Для массива Х вещественных чисел определить n и P=∏Xn (нижний индекс i=1, верхний--n) , где Xn+A>B 2.Заданы две матрицы А и В целых чисел. Преобразовать их в матриц логических значений А’ и...
C++ Шаблоны. Хеш-функция http://www.cyberforum.ru/cpp-beginners/thread587664.html
Добрые день. Есть задание сделать телефонную книгу. Поиск в базе сделать через хеш-функцию. name - фамилия абонента. num - номер телефона Делал вот так () : файл LIST.h
C++ Производные классы Уважаемые программисты, помогите блондинке с задачкой:scratch: В функции main создать инициализированный объект производного класса, и указатель на тип второго производного класса. Распечатать... подробнее

Показать сообщение отдельно
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
27.05.2012, 12:32
немного ООП
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
#include <iostream>
#include <string>
#include <stdexcept>
#include <list>
#include <utility>
#include <sstream>
 
class Date
{
public:
    Date() : pMD(1, 1){}
    explicit Date(std::string const& s)
    {
        std::istringstream iss(s);
        iss >> pMD.second;
        if(pMD.second < 1 || pMD.second > 31) throw std::out_of_range("day out of range");
        if('.' != iss.get()) throw std::invalid_argument("Incorrect date format");
        iss >> pMD.first;
        if(pMD.first < 1 || pMD.first > 12) throw std::out_of_range("month out of range");
        if(!iss.eof()) throw std::invalid_argument("Incorrect date format");
    }
    bool operator<=(Date const& d) const
    {
        return pMD <= d.pMD;
    }
    friend std::ostream& operator<<(std::ostream& o, Date const& d)
    {
        return o << d.pMD.second << '.' << d.pMD.first;
    }
private:
    std::pair<std::size_t, std::size_t> pMD;
};
 
class ZSign
{
public:
    explicit ZSign(std::size_t num)
    {
        switch(num)
        {
            case 1 : Init("Ram", Date("21.03"), Date("20.04")); break;
            case 2 : Init("Bull", Date("21.04"), Date("21.05")); break;
            case 3 : Init("Twins", Date("22.05"), Date("21.06")); break;
            case 4 : Init("Crab", Date("22.06"), Date("22.07")); break;
            case 5 : Init("Lion", Date("23.07"), Date("22.08")); break;
            case 6 : Init("Maiden", Date("23.08"), Date("23.09")); break;
            case 7 : Init("Scales", Date("24.09"), Date("23.10")); break;
            case 8 : Init("Scorpion", Date("24.10"), Date("22.11")); break;
            case 9 : Init("Archer", Date("23.11"), Date("21.12")); break;
            case 10 : Init("Sea-Goat", Date("22.12"), Date("20.1")); break;
            case 11 : Init("Water-Bearer", Date("21.01"), Date("19.02")); break;
            case 12 : Init("Fish", Date("20.02"), Date("20.03")); break;
            default : throw std::out_of_range("ZSign argument must belongs to an interval [1,12]");
        }
    }
    friend std::ostream& operator<< (std::ostream& o, ZSign const& zs)
    {
        return o << zs.name << '(' << zs.beg << '-' << zs.end << ')';
    }
    friend class ZYear;
private:
    void Init(std::string const& name_, Date const& begDate_, Date const& endDate_)
    {
        name = name_;
        beg = begDate_;
        end = endDate_;
    }
    Date beg, end;
    std::string name;
};
 
class ZYear
{
public:
    ZYear()
    {
        for(std::size_t i = 0; i < 12; l.emplace_back(++i));
    }
    ZSign GetSignByDate(Date const& d) const
    {
        for(auto const& val : l)
        {
            if(val.beg <= d && d <= val.end) return val;
        }
        auto it = l.begin();
        std::advance(it, 9);
        return *it;
    }
private:
    std::list<ZSign> l;
};
 
int main()
{
    ZYear y;
    std::cout << y.GetSignByDate(Date("22.07")) << std::endl;
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru