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

классы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнение шестнадцатеричных форм http://www.cyberforum.ru/cpp-beginners/thread341104.html
Такая задача:считать из потока 2-байтовое число, перевести в 16-ричную систему счисления и сравнить с заданным 16-ричным числом. помогите с решением.очень надо..
C++ самый, самый большой )) народ че делать unsigned long long int - оказался недостаточен есть тип побольше какой-нить? или там как-то обойти как в паскале? VS 2008 http://www.cyberforum.ru/cpp-beginners/thread341077.html
C++ Киньте задачки для тренировки
Хочу порешать задачки по C++......нужны либо книжки с задачками - либо ваши примеры.....желательно (если книжки) - чтобы там и решение было....я новичок, так что хочу попрактиковаться!!! =)
Задача на динамику или комбинаторику C++
Для заданных натуральных чисел N и K требуется вычислить количество чисел от 1 до N, имеющих в двоичной записи ровно K нулей. два натуральных числа через пробел N и K, не превышающие 10^9 На этой...
C++ Деление дробей. http://www.cyberforum.ru/cpp-beginners/thread341056.html
Задача: вывести в порядке возрастания все правильные несократимые дроби со знаменателем, не превосходящим n. Сам код: #include <iostream> #include <string> using namespace std; using...
C++ Определить, повторяются ли цифры в числе Нужно ввести число и в результате получить сообщение повторяются цифры в числе или нет.Способ определения может быть любым. Число нужно вводить полностью(не через пробел :) подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,781
12.08.2011, 04:12
Спортсмен в первом приближении
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include <iostream>
#include <string>
#include <sstream>
#include <stdexcept>
#include <algorithm>
#include <iterator>
#include <set>
#include <ctime>
 
class Person {
    std::string sName;
    std::string sPatronymic;
    std::string sSurname;
    size_t      nAge;
    double      dGrowth;
    double      dWeight;
public:
    Person() : sName("Unknown"), sPatronymic("Unknown"), sSurname("Unknown"), nAge(0), dGrowth(0.0), dWeight(0.0) {}
    virtual ~Person() {}
    void Name(const std::string & name) { sName = name; }
    std::string Name() const { return sName; }
    void Patronymic(const std::string & patronymic) { sPatronymic = patronymic; }
    std::string Patronymic() const { return sPatronymic; }
    void Surname(const std::string & surname) { sSurname = surname; }
    std::string Surname() const { return sSurname; }
    virtual void Age(const size_t age) { nAge = age; }
    virtual size_t Age() const { return nAge; }
    virtual void Growth(const double growth) { dGrowth = growth; }
    virtual double Growth() const { return dGrowth; }
    virtual void Weight(const double weight) { dWeight = weight; }
    virtual double Weight() const { return dWeight; }
};
 
enum StateType { ST_BEGINNER = 0, ST_GTO_SIGN, ST_GAP_III, ST_GAP_II, ST_GAP_I, ST_CANDIDATE, ST_MASTER, ST_ALL_STATES };
const char * STATE_NAMES[ST_ALL_STATES] = { "Beginner", "GTO sign", "Gap III", "Gap II", "Gap I", "Master candidate", "Master of sport" };
 
const size_t MIN_AGE(16);
const size_t MAX_AGE(40);
const double MIN_GROWTH(150.0);
const double MAX_GROWTH(220.0);
const double MIN_WEIGHT(40.0);
const double MAX_WEIGHT(200.0);
 
const size_t MIN_YEAR(2000);
 
 
class Award {
    std::string sName;
    size_t nYear;
    void CheckYear() {
        if ( nYear < MIN_YEAR )
            throw ( std::runtime_error("Wrong year of award - before minimum possible.") );
        else {
            time_t tSeconds = time(NULL);
            struct tm * mDate = localtime(&tSeconds);
            if ( nYear > mDate->tm_year + 1900 )
                throw ( std::runtime_error("Wrong year of award - after current year.") );
        }
    }
 
public:
    Award(const std::string & name, const size_t year) : sName(name), nYear(year) { CheckYear(); }
    Award() : sName("Unknown"), nYear(MIN_YEAR) {}
    void Name(const std::string & name) { sName = name; }
    std::string Name() const { return sName; }
    void Year(const size_t year) { nYear = year; CheckYear(); }
    size_t Year() const { return nYear; }
};
 
struct AwardsByYear {
    bool operator () (const Award & a, const Award & b) { return a.Year() < b.Year(); }
};
 
std::ostream & operator << (std::ostream & ost, const Award & award) {
    ost << award.Year() << "\t" << award.Name();
    return ost;
}
 
class Sportsman : public Person {
    size_t nId;
    StateType nState;
    std::multiset<Award, AwardsByYear> cAwards;
public:
    Sportsman() : Person(), nId(0), nState(ST_BEGINNER), cAwards() {}
    virtual ~Sportsman() {}
    virtual size_t Age() const { return Person::Age(); }
    virtual void Age(size_t age) {
        if ( age < MIN_AGE )
            throw ( std::runtime_error("Too young.") );
        if ( age > MAX_AGE )
            throw ( std::runtime_error("Too old.") );
        Person::Age(age);
    }
    virtual double Growth() const { return Person::Growth(); }
    virtual void Growth(const double growth) {
        if ( growth < MIN_GROWTH )
            throw ( std::runtime_error("Too short.") );
        if ( growth > MAX_GROWTH )
            throw ( std::runtime_error("Too long.") );
        Person::Growth(growth);
    }
    virtual double Weight() const { return Person::Weight(); }
    virtual void Weight(const double weight) {
        if ( weight < MIN_WEIGHT )
            throw ( std::runtime_error("Too easy.") );
        if ( weight > MAX_WEIGHT )
            throw ( std::runtime_error("Too heavy.") );
        Person::Weight(weight);
    }
    void Id(const size_t id) { nId = id; }
    size_t Id() const { return nId; }
    void State(const StateType state) { nState = state; }
    StateType State() const { return nState; }
    std::string StateAsString() const { return std::string(STATE_NAMES[State()]); }
    void AddAward(const Award & award) { cAwards.insert(award); }
    std::string AwardsAsString() const {
        std::ostringstream ost;
        if ( cAwards.empty() )
            ost << "No awards.\n";
        else
            std::copy(cAwards.begin(), cAwards.end(), std::ostream_iterator<Award>(ost, "\n"));
        return ost.str();
    }
    std::string GetInfo() const {
        std::ostringstream ost;
        ost << "Name:       " << Name() << "\n";
        ost << "Patronymic: " << Patronymic() << "\n";
        ost << "Surname:    " << Surname() << "\n";
        ost << "Age:        " << Age() << "\n";
        ost << "Growth:     " << Growth() << "\n";
        ost << "Weight:     " << Weight() << "\n";
        ost << "ID:         " << Id() << "\n";
        ost << "State:      " << StateAsString() << "\n";
        ost << "Awards:\n"    << AwardsAsString() << std::endl;
        return ost.str();
    }
};
 
 
 
/* TEST */
int main(){
 
    Sportsman s;
 
    std::cout << "Default values:\n" << s.GetInfo();
 
    s.Name("Vasya");
    s.Patronymic("Petrovich");
    s.Surname("Pupkin");
    s.Age(25);
    s.Growth(180);
    s.Weight(90);
    s.Id(13);
    s.State(ST_MASTER);
    s.AddAward(Award("Zimbabve snowboard champ", 2008));
    s.AddAward(Award("Alyaska safari", 2006));
    s.AddAward(Award("Pekin kisses deadmatch", 2001));
 
    std::cout << "Updated values:\n" << s.GetInfo();
 
    return 0;
}
классы
Команду уже лень делать. Может сам всё-таки?
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru