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

классы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сравнение шестнадцатеричных форм http://www.cyberforum.ru/cpp-beginners/thread341104.html
Такая задача:считать из потока 2-байтовое число, перевести в 16-ричную систему счисления и сравнить с заданным 16-ричным числом. помогите с решением.очень надо..
C++ Builder Указатель Sender Почему sender не работает в функциях? float funct(){ ((TButton*)Sender)->Caption="Hi" } Компилятор выдает ошибку " Unit1.cpp(45): E2451 Undefined symbol 'Sender'" А вот если это написать в самом OnClick, то работает. Но мне нужно в функцию. http://www.cyberforum.ru/cpp-beginners/thread341079.html
самый, самый большой )) C++
народ че делать unsigned long long int - оказался недостаточен есть тип побольше какой-нить? или там как-то обойти как в паскале? VS 2008
C++ Киньте задачки для тренировки
Хочу порешать задачки по C++......нужны либо книжки с задачками - либо ваши примеры.....желательно (если книжки) - чтобы там и решение было....я новичок, так что хочу попрактиковаться!!! =)
C++ Задача на динамику или комбинаторику http://www.cyberforum.ru/cpp-beginners/thread341065.html
Для заданных натуральных чисел N и K требуется вычислить количество чисел от 1 до N, имеющих в двоичной записи ровно K нулей. два натуральных числа через пробел N и K, не превышающие 10^9 На этой задаче мой решения не проходят по времени. Можно услышать ваше мнение по поводу решения этой задачи?
C++ Деление дробей. Задача: вывести в порядке возрастания все правильные несократимые дроби со знаменателем, не превосходящим n. Сам код: #include <iostream> #include <string> using namespace std; using std::string; int main() { int n,i,num,numi; float last=0,min; string temp; подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9383 / 5433 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
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;
}
классы
Команду уже лень делать. Может сам всё-таки?
 
Текущее время: 00:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru