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

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

Войти
Регистрация
Восстановить пароль
 
dimadjs
1 / 1 / 0
Регистрация: 12.06.2010
Сообщений: 49
#1

ООП(Класс обработчик определяет количественный состав элементов мебельного изделия и вычисляет площадь и стоимость изделия) - C++

06.01.2013, 04:15. Просмотров 779. Ответов 13
Метки нет (Все метки)

Мебельное изделие и элемент изделия . Класс обработчик определяет количественный состав элементов мебельного изделия и вычисляет суммарную площадь всего изделия а также стоимость материала.

класс элемент изделия
длина,ширина,цена,название

класс мебельное изделие
состоит из названия и элементов изделия

класс обработчик считает площадь цену и количество изделий взятых из мебельного изделия всех
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2013, 04:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ООП(Класс обработчик определяет количественный состав элементов мебельного изделия и вычисляет площадь и стоимость изделия) (C++):

обработчик непонято как сделать чтоб в нем считалось общая площадь изделия, стоимость и количественный состав каким образом это реализовать? - C++
Всем привет Решил посоветоваться вот у меня есть задача создать 3 класса Мебельное изделие, элемент изделия, и обработчик Ну вот...

Создать массив структур, каждая из которых состоит из элементов: продукты-напитки и шоколадные изделия - C++
Задача Создать массив структур, каждая из которых состоит из следующих элементов:продукты-напитки и шоколадные изделия; их калорийность,...

Найти все бракованные изделия на конвейере за один проход робота-контролера - C++
Всем добрый вечер! Вот попалась такая задача: на конвейере по производству телефонов работает робот-контролер. Он идет вдоль конвейера...

Класс Circle (круг), который вычисляет площадь и периметр по радиусу - C++
Напишите класс Circle (круг), который вычисляет площадь и периметр по радиусу, который передаётся классу как параметр во время создания...

Получить изделия номер поставщика, выполнившем более 1/2 объема поставок для изделия - MySQL
Здравствуйте, не могу понять, как создать запрос вот к такому предложению ""Получить для каждого изделия номер поставщика, выполнившем...

В ящике имеются 20 изделий первого сорта и 5 - высшего сорта.Из ящика наудачу берут одно за другим два изделия.Найти вероятность того,что оба изделия - Теория вероятностей
В ящике имеются 20 изделий первого сорта и 5 - высшего сорта.Из ящика наудачу берут одно за другим два изделия.Найти вероятность того,что...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
07.01.2013, 11:35 #2
Если без наследования и шаблонов :
проверка здесь -> http://liveworkspace.org/code/uG2Od$2[CPP]

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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <functional>
// класс элемент изделия
// длина,ширина,цена,название
class ElementFurnitureProduct // Элемент Мебельного изделия 
{
   std::string Name;
    int  Width;
    int  Heigth;
    int  Length;
    int  Price;
 
   public:  
 
       ElementFurnitureProduct()
      : Width(0), Heigth(0), Length(0), Price(0)
       { }
 
       ElementFurnitureProduct( std::string Name_, int  Width_, int  Heigth_, int  Length_, int  Price_ )
                                    : Name(Name_), Width(Width_), Heigth(Heigth_), Length(Length_), Price(Price_)
       { }
 
 
    const std::string& getName() const
       {
          return  Name;
       }
 
       int getWidth() const
       {
          return  Width;
       }
 
       int getHeigth() const
       {
          return  Heigth;
       }
 
       int getLength() const
       {
          return  Length;
       }
 
       int getPrice() const
       {
          return  Price;
       }
 
};
 
 
//класс мебельное изделие
// состоит из названия и элементов изделия
class FurnitureProduct // Мебельное изделие 
{
    std::string Name;
    std::vector<ElementFurnitureProduct*> Elements;
 
public:
 
    FurnitureProduct()
    {}
 
    FurnitureProduct( std::string Name_, std::vector<ElementFurnitureProduct*> Elements_ )
        : Name(Name_), Elements(Elements_)
    {}
 
    ~FurnitureProduct()
    {       
        for(
              std::vector<ElementFurnitureProduct*>::iterator it = Elements.begin();
              it != Elements.end(); it++
            )
 
            delete *it;
    }
 
    const std::vector<ElementFurnitureProduct*> & getElements() const
    {
       return Elements;
    }
 
    const std::string& getName() const
       {
          return  Name;
       }
 
};
 
// Класс обработчик определяет количественный состав элементов мебельного изделия и вычисляет суммарную площадь всего изделия а также стоимость материала
  class Handler //  Обработчик
{
 
private:        
   
        Handler(const Handler& mobj);
        Handler& operator=(const Handler&);
        Handler() 
    {}
 
public:
 
static const std::string& getProductName( const FurnitureProduct & furnitureProduct ) 
       {
          return  furnitureProduct.getName();
       }
 
   // количественный состав элементов мебельного изделия
static const std::string  getComposition( const FurnitureProduct & furnitureProduct)
    {
        std::string outString ;
        
           std::vector<ElementFurnitureProduct*> inElements = furnitureProduct.getElements();
           std::map<std::string, int >  inMap;  
        for(
              std::vector<ElementFurnitureProduct*>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            inMap[(*it)->getName()]++;
 
            for(
              std::map<std::string, int >::iterator mapit = inMap.begin(); mapit != inMap.end(); mapit++
            ){
                outString += (*mapit).first + " : " + std::to_string((*mapit).second) + "\n";
               
            }
        return outString;
       }
 
    // суммарную площадь мебельного изделия
static std::string getVolume(const FurnitureProduct & furnitureProduct) 
    {
        sumVolume = 0;
 
        std::vector<ElementFurnitureProduct*> inElements = furnitureProduct.getElements();
        // суммарный  объем всех эл-тов         
        for(
              std::vector<ElementFurnitureProduct*>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            sumVolume +=  ( (*it)->getHeigth() * (*it)->getLength() * (*it)->getWidth() );
    
       return std::to_string(sumVolume);
    }
 
 
    // стоимость всего материала мебельного изделия
static std::string getPrice( const FurnitureProduct & furnitureProduct )
    {
        sumPrice = 0;
 
        std::vector<ElementFurnitureProduct*> inElements = furnitureProduct.getElements();
        
        for(
              std::vector<ElementFurnitureProduct*>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            sumPrice += ( (*it)->getPrice()* (*it)->getHeigth() * (*it)->getLength() * (*it)->getWidth() );
 
       return std::to_string(sumPrice); 
     
    }
 
    private:
static  int sumVolume;
static  int sumPrice;
 
};
 
  int Handler::sumVolume;
  int Handler::sumPrice;
 
int main()
{       
   const int LEN = 4;
     std::function<std::string(const FurnitureProduct & p)> ptrMethods[ LEN ] =   { 
                                                                              &Handler::getProductName,
                                                                             &Handler::getComposition , 
                                                                             &Handler::getVolume,
                                                                             &Handler::getPrice
                                                                     };
 
    const std::string st[ LEN ] =                                         {
                                                                         "Product : " ,
                                                                        " \nQuantity of elements \n",
                                                                            " \nVolume  ",
                                                                            " \nPrice  "
                                                                     };
 
 
 
    FurnitureProduct furnitureProduct(
                        "Stool", {{new ElementFurnitureProduct("Leg",  10, 10, 10, 3)},
                                  {new ElementFurnitureProduct("Leg",  10, 10, 10, 3)},
                                  {new ElementFurnitureProduct("Leg",  10, 10, 10, 3)},
                                  {new ElementFurnitureProduct("Leg",  10, 10, 10, 3)},
                                  {new ElementFurnitureProduct("Seat", 13, 13, 15, 13)}}
                );
   
    for (int i = 0; i < LEN ; i++)
    {
        std::cout  << st[ i ] 
             << ptrMethods[i](furnitureProduct);
    }
                           
  
    //
    std::cout  << " \n\n" ;
       FurnitureProduct furnitureProduct2(
                          "Bed", {{new ElementFurnitureProduct("Frame",          110, 10, 10, 63)},
                                  {new ElementFurnitureProduct("Sidewall",       10, 10, 10, 33)},
                                  {new ElementFurnitureProduct("Support walls",  10, 140, 10, 53)},
                                  {new ElementFurnitureProduct("Side-bar",       10, 10, 10, 3)},
                                  {new ElementFurnitureProduct("Headboards",     10, 140, 10, 3)},
                                  {new ElementFurnitureProduct("Mattress",       13, 135, 15, 13)}}
                                  
                                      );
                                  
    for (int i = 0; i < LEN ; i++)
    {
        std::cout  << st[ i ]
            << ptrMethods[i](furnitureProduct2);
    }
   
   return ( 0 );
 
}
0
dimadjs
1 / 1 / 0
Регистрация: 12.06.2010
Сообщений: 49
08.01.2013, 22:32  [ТС] #3
Спасибо, но выдает ошибку и можно как то поменьше что ли?

Добавлено через 54 минуты
[Error] 'to_string' is not a member of 'std' во как исправить?
Или может кто предложит другое решение ?
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
09.01.2013, 01:41 #4
Цитата Сообщение от dimadjs Посмотреть сообщение
как то поменьше что ли
Куда уж меньше, и так все в кучу свалено .Реализация методов внутри класса .
Поправил без С++ 11. Убрал динамическое выделение памяти , а то криво получилось .
P.S. вообще то это набросок . По моему тут еще писать и писать .
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <functional>
#include <sstream>
// класс элемент изделия
// длина,ширина,цена,название
class ElementFurnitureProduct // Элемент Мебельного изделия 
{
    std::string Name;
    int  Width;
    int  Heigth;
    int  Length;
    int  Price;
 
   public:  
 
       ElementFurnitureProduct()
      : Width(0), Heigth(0), Length(0), Price(0)
       { }
 
       ElementFurnitureProduct(const std::string Name_, int  Width_, int  Heigth_, int  Length_, int  Price_ )
                                    : Name(Name_), Width(Width_), Heigth(Heigth_), Length(Length_), Price(Price_)
       { }
 
 
    const std::string& getName() const
       {
          return  Name;
       }
 
       int getWidth() const
       {
          return  Width;
       }
 
       int getHeigth() const
       {
          return  Heigth;
       }
 
       int getLength() const
       {
          return  Length;
       }
 
       int getPrice() const
       {
          return  Price;
       }
 
};
 
 
//класс мебельное изделие
// состоит из названия и элементов изделия
class FurnitureProduct // Мебельное изделие 
{
    std::string Name;
    std::vector<ElementFurnitureProduct> Elements;
 
public:
 
    FurnitureProduct()
    {}
 
    FurnitureProduct(const std::string Name_, std::vector<ElementFurnitureProduct> &Elements_ )
        : Name(Name_), Elements(Elements_)
    {}
 
    const std::vector<ElementFurnitureProduct> & getElements() const
    {
       return Elements;
    }
 
    const std::string& getName() const
       {
          return  Name;
       }
};
 
// Класс обработчик определяет количественный состав элементов мебельного изделия и вычисляет суммарную площадь всего изделия а также стоимость материала
  class Handler //  Обработчик
{
private:          
        Handler(const Handler& root);
        Handler& operator=(const Handler&);
        Handler() 
    {}
 
public:
    static const std::string& getName(const FurnitureProduct & furnitureProduct) 
       {
          return  furnitureProduct.getName();
       }
 
    // количественный состав элементов мебельного изделия
static const std::string  getComposition( const FurnitureProduct & furnitureProduct)
    {
          outString.clear() ;
          inElements = furnitureProduct.getElements();
          std::map<std::string, int >   inMap;  
        for(
              std::vector<ElementFurnitureProduct>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            inMap[it->getName()]++;
 
            for(
              std::map<std::string, int >::iterator mapit = inMap.begin(); mapit != inMap.end(); mapit++
            )
                {
                      std::stringstream ss;
                      ss << (*mapit).second;
                      outString += (*mapit).first + " : " + ss.str() + "\n";               
                }
        return outString;
       }
 
    // суммарную площадь мебельного изделия
static std::string  getVolume(const FurnitureProduct & furnitureProduct) 
    {       
        sumVolume = 0;
        inElements = furnitureProduct.getElements();
        // суммарный  объем всех эл-тов         
        for(
              std::vector<ElementFurnitureProduct>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            sumVolume +=  ( it->getHeigth() * it->getLength() * it->getWidth() );
    
         std::stringstream ss;
         ss << sumVolume;
         return ss.str();
    }
 
    // стоимость всего материала мебельного изделия
static std::string getPrice( const FurnitureProduct & furnitureProduct )
    {
        sumPrice = 0;
        inElements = furnitureProduct.getElements();
        
        for(
              std::vector<ElementFurnitureProduct>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            sumPrice += ( it->getPrice()* it->getHeigth() * it->getLength() *  it->getWidth() );
         std::stringstream ss;
         ss << sumPrice;
         return ss.str();        
    }
 
    private:
            static  int                                  sumVolume;
            static  int                                  sumPrice;
            static  std::string                          outString ;
            static  std::vector<ElementFurnitureProduct> inElements;
};
 
          int                                   Handler::sumVolume;
          int                                   Handler::sumPrice;
          std::string                           Handler::outString ;
          std::vector<ElementFurnitureProduct>  Handler::inElements;
  
 
int main()
{       
    const int LEN = 4;
     std::function<std::string(const FurnitureProduct & p)> ptrMethods[] =   { 
                                                                             &Handler::getName,
                                                                             &Handler::getComposition , 
                                                                             &Handler::getVolume,
                                                                             &Handler::getPrice
                                                                     };
 
    const std::string st[] =                                         {
                                                                        "\nProduct :  ",
                                                                        " \nQuantity of elements :\n",
                                                                        " \nVolume  ",
                                                                        " \nPrice  "
                                                                     };
 
    std::vector<ElementFurnitureProduct> Elements;
 
    ElementFurnitureProduct leg("Leg",  10, 10, 10, 3);
    ElementFurnitureProduct seat("Seat", 13, 13, 15, 13);
 
        Elements.push_back(leg);
        Elements.push_back(leg);
        Elements.push_back(leg);
        Elements.push_back(leg);
        Elements.push_back(seat);
    
 
    FurnitureProduct furnitureProduct("Stool", Elements );
 
    for (int i = 0; i < LEN; i++)
    {
        std::cout  << st[ i ] 
             << ptrMethods[i](furnitureProduct);
    }
                           
  std::cout  << std::endl;
 
  return  ( 0 );
}
1
dimadjs
1 / 1 / 0
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 02:13  [ТС] #5
ВО спасибо только(

Просто это лабораторная работа( я думал может как то попроще можно
0
Миниатюры
ООП(Класс обработчик определяет количественный состав элементов мебельного изделия и вычисляет площадь и стоимость изделия)  
dimadjs
1 / 1 / 0
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 02:45  [ТС] #6
а вот если без vector и iterator
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
09.01.2013, 02:54 #7
Цитата Сообщение от dimadjs Посмотреть сообщение
Миниатюры
Меняйте с 83 - 176 строку моего послед. кода на этот
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
// Класс обработчик определяет количественный состав элементов мебельного изделия и вычисляет суммарную площадь всего изделия а также стоимость материала
  class Handler //  Обработчик
{
private:          
        Handler(const Handler& root);
        Handler& operator=(const Handler&);
        Handler() 
    {}
 
public:
    static  std::string getName(const FurnitureProduct & furnitureProduct) 
       {
          return  furnitureProduct.getName();
       }
 
    // количественный состав элементов мебельного изделия
static  std::string  getComposition( const FurnitureProduct & furnitureProduct)
    {
          outString.clear() ;
          inElements = furnitureProduct.getElements();
          std::map<std::string, int >   inMap;  
        for(
              std::vector<ElementFurnitureProduct>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            inMap[it->getName()]++;
 
            for(
              std::map<std::string, int >::iterator mapit = inMap.begin(); mapit != inMap.end(); mapit++
            )
                {
                      std::stringstream ss;
                      ss << (*mapit).second;
                      outString += (*mapit).first + " : " + ss.str() + "\n";               
                }
        return outString;
       }
 
    // суммарную площадь мебельного изделия
static  std::string  getVolume(const FurnitureProduct & furnitureProduct) 
    {       
        sumVolume = 0;
        inElements = furnitureProduct.getElements();
        // суммарный  объем всех эл-тов         
        for(
              std::vector<ElementFurnitureProduct>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            sumVolume +=  ( it->getHeigth() * it->getLength() * it->getWidth() );
    
         std::stringstream ss;
         ss << sumVolume;
         return ss.str();
    }
 
    // стоимость всего материала мебельного изделия
static std::string getPrice( const FurnitureProduct & furnitureProduct )
    {
        sumPrice = 0;
        inElements = furnitureProduct.getElements();
        
        for(
              std::vector<ElementFurnitureProduct>::iterator it = inElements.begin();
              it != inElements.end(); it++
            )
            sumPrice += ( it->getPrice()* it->getHeigth() * it->getLength() *  it->getWidth() );
         std::stringstream ss;
         ss << sumPrice;
         return ss.str();        
    }
 
    private:
            static  int                                  sumVolume;
            static  int                                  sumPrice;
            static  std::string                          outString ;
            static  std::vector<ElementFurnitureProduct> inElements;
};
 
          int                                   Handler::sumVolume;
          int                                   Handler::sumPrice;
          std::string                           Handler::outString ;
          std::vector<ElementFurnitureProduct>  Handler::inElements;
  
    typedef  std::string (*PtrMethods)(const FurnitureProduct & p);
int main()
{       
    const int LEN = 4;
    
    
    PtrMethods  ptrMethods[]  =  { 
                         &Handler::getName,
                         &Handler::getComposition , 
                         &Handler::getVolume,
                         &Handler::getPrice
                       };
0
dimadjs
1 / 1 / 0
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 02:59  [ТС] #8
сейчас пробую

Добавлено через 2 минуты
Все работает только quantity of elements: и пусто там количество должно быть же? если вам поможет то я на Dev C++ работаю(
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
09.01.2013, 03:01 #9
Цитата Сообщение от dimadjs Посмотреть сообщение
там количество должно быть же?
Посмотри там выводится : 4 ножки и 1 сиденье
1
dimadjs
1 / 1 / 0
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 03:02  [ТС] #10
а можно заменить как то vector ?
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
09.01.2013, 03:06 #11
Ну на массив поменять . Мне лень ))) сразу предупреждаю .
0
dimadjs
1 / 1 / 0
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 03:07  [ТС] #12
C++
1
2
3
const std::string Name
 const std::string& getName() const
 int getWidth() const
Почему const?

Добавлено через 45 секунд
Просто Vector мы не учили ( ну я насколько понял он упрощает жизнь
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
09.01.2013, 03:08 #13
dimadjs,

Не по теме:

извиняй ушел , дела у меня

0
dimadjs
1 / 1 / 0
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 03:08  [ТС] #14
Спасибо все равно
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2013, 03:08
Привет! Вот еще темы с ответами:

Создайте приложение «Ювелир», вычисляющее стоимость золотого изделия - Lazarus
Ребят, помогите срочно с задачкой) Создайте приложение «Ювелир», вычисляющее стоимость золотого изделия. В однострочных редакторах...

Выбрать кондитерские изделия, стоимость которых от 30 до 50 рублей за 1 кг (блок схема) - Pascal
создать файл содержащий сведения об ассортименте конфет выпускаемых кондитерской фабрикой выбрать те стоимость которых от 30 до 50 рублей...

Записи. Меню ресторана "Дракон" (наименование изделия, вес, стоимость) - Pascal ABC
1.Составить программу, выводящую на экран меню ресторана &quot;Дракон&quot; (наименование изделия, вес, стоимость). 2.1.формировать запись,...

изделия - Теория вероятностей
Вероятность изделия быть бракованным равна 0,006. Чему равна вероятность того,что среди 1000 наугад взятых винтовок ровно 10 бракованных.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.01.2013, 03:08
Ответ Создать тему
Опции темы

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