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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
#1

Дополнить описание класса - C++

22.09.2012, 19:20. Просмотров 607. Ответов 2
Метки нет (Все метки)

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
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class CFigure {
protected:
struct Properties {
float *list;
char length ;
} properties;
public:
CFigure() {
properties.length = 0;
properties.list = NULL;
};
void setProperties( float *prop, const int len ) {
properties.length = len;
properties.list = new float[ len ];
memcpy( ( void* )properties.list, ( void* )prop, len * sizeof( prop[ 0 ] ) );
};
~CFigure() {
delete [] properties.list;
};
virtual float getSquare() = 0;
virtual void showProterties() = 0;
};
class CCircle : public CFigure {
enum { X, Y, RADIUS };
public:
CCircle( const float x = .0f, const float y = .0f, const float r =.0f ) {
float tmp[ 3 ] = { x, y, r < .0f ? -r : r };
setProperties( tmp, 3 );
};
float getSquare( void ) {
float radius = properties.list[ RADIUS ];
return radius * radius * 3.14f;
};
void showProterties() {
cout << "x: " << this->properties.list[ X ];
cout << " y: " << this->properties.list[ Y ];
cout << " r: " << this->properties.list[ RADIUS ];
cout << " square: " << getSquare() << endl;
};
<дополнить описание>
};
void main( void ) {
vector< CCircle > figureList;
figureList.push_back( CCircle( 1, 2, 3 ) );
figureList.push_back( CCircle( 2, 3, 4 ) );
figureList.push_back( CCircle( 3, 4, 5 ) );
( max_element( figureList.begin(), figureList.end() ) )->showProterties();
}
Дорогие форумчане, помогите разобраться с заданием!!

Задание заключается вот в чем, дополнить описание
класса «CFigure» так чтобы, чтобы функция «main» работала корректно (среди всех
элементов списка «figureList» находился с наибольшим радиусом).

Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2012, 19:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дополнить описание класса (C++):

Как дополнить функционал класса из другого класса - C++
Вот допустим, написал я класс TMatrix (матрица), можно добавлять строки, столбцы, есть capacity и прочие ништяки. Всё отлажено и отлично...

Дополнить описание для поиска наибольшего радиуса - C++
Прошу помощи с заданием вот в таком готовом коде : #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; using namespace std; ...

Как вынести описание методов вложенного класса за пределы класса? - C++
Подскажите, пожалуйста, как мне вынести описание методов вложенного класса за пределы класса?

Составить описание класса "3D вектор". Объявить объекты класса и продемонстрировать работу методов - C++
Возникли сложности при решении задачи. Буду признателен тем, кто поможет. Задание: Составить описание класса. Объявить объекты класса...

Построить описание класса - C++
Здравствуйте! Нужна очень ваша помощь!) Может кому-нибудь не сложно написать программу.. Просто такая ситуация, семестр заканчивается, а...

Задать описание класса - C++
Задать описание класса, содержащего поля int x, y; double a,b,c и позволяет выполнять следующие методы:Выполнять инициализацию всех полей...

2
BRcr
4008 / 2297 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
22.09.2012, 20:06 #2
Допиши оператор сравнения как метод класса CCircle:
C++
1
bool operator< ( CCircle &obj ){ return properties.list[RADIUS] < obj.get_props().list[RADIUS]; }
И функцию доступа к данным как метод класса CFigure:
C++
1
Properties get_props(){ return properties; }
1
BRcr
4008 / 2297 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
23.09.2012, 16:39 #3
Цитата Сообщение от Lel'ka(ЛС) Посмотреть сообщение
а можете вашу подсказку в код вставить..а то не получается ничего что-то
Заранее спасибо!
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
// ---------------------------------------------------------------------------
#include <algorithm>
#include <iostream>
#include <vector>
// ---------------------------------------------------------------------------
class CFigure {
protected:
    struct Properties {
        float *list;
        int length;
    }
    properties;
public:
    CFigure( ) {
        properties.length = 0;
        properties.list = NULL;
    }
    void setProperties( float *prop, const int len ) {
        if ( prop && len > 0 ) {
            properties.length = len;
            properties.list = new float[len];
            memcpy( ( void * )properties.list, ( void * )prop, len *sizeof( prop[0] ) );
        }
    }
    Properties get_props( ) {
        return properties;
    }
    ~CFigure( ) {
        delete[]properties.list;
    }
    virtual float getSquare( ) = 0;
    virtual void showProterties( ) = 0;
};
// ---------------------------------------------------------------------------
class CCircle
               : public CFigure {
    enum {
        X = 0, Y, RADIUS
    };
public:
    CCircle( const float x = .0f, const float y = .0f, const float r = .0f )
                   : CFigure( ) {
        float tmp[3] = {x, y, r < .0f ? -r : r};
        setProperties( tmp, 3 );
    }
    bool operator < ( CCircle &obj ) {
        return properties.list[RADIUS] < obj.get_props( ).list[RADIUS];
    }
    virtual float getSquare( ) {
        float radius = properties.list[RADIUS];
        return radius *radius * 3.14f;
    }
    virtual void showProterties( ) {
        cout << "x: " << properties.list[X]
                       << " y: " << properties.list[Y]
                       << " r: " << properties.list[RADIUS]
                       << " square: " << getSquare( )
                       << endl << endl;
    }
};
// ---------------------------------------------------------------------------
int _tmain( int argc, _TCHAR *argv[] ) {
    using namespace std;
    system( "chcp 1251" );
    system( "cls" );
    //////////////////////////////////////
    vector <CCircle> figureList;
    CCircle one( 1, 2, 3 ), two( 2, 3, 7 ), three( 3, 4, 5 );
 
    figureList.push_back( one );
    figureList.push_back( two );
    figureList.push_back( three );
 
    max_element( figureList.begin( ), figureList.end( ) )->showProterties( );
    //////////////////////////////////////
    system( "pause" );
    return 0;
}
// ---------------------------------------------------------------------------
1
Миниатюры
Дополнить описание класса  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 16:39
Привет! Вот еще темы с ответами:

Описание класса матрицы - C++
Доброго времени суток. Пожалуйста помогите с программой, писал долго и кое как вот написал:) Программа на курсовой проект, препод не...

Описание класса с именем TRAIN - C++
Задание 1: Описание класса. Запишите описание класса с именем TRAIN, содержащего следующие поля: 1)название пункта назначения; ...

Составить описание класса Прямоугольник - C++
Пожалуйста помогите сделать задание!!!!!!!!!!!!!!!!!!! Составить описание класса прямоугольников со сторонами, параллельными осям...

Описание класса с именем PERSON - C++
Описание класса. Запишите описание класса с именем PERSON, содержащего следующие поля: фамилия и инициалы; дата рождения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru