Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
dimadjs
1 / 1 / 2
Регистрация: 12.06.2010
Сообщений: 49
#1

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

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

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

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

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

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

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

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

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

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

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

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

13
MrCold
859 / 757 / 174
Регистрация: 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 / 2
Регистрация: 12.06.2010
Сообщений: 49
08.01.2013, 22:32  [ТС] #3
Спасибо, но выдает ошибку и можно как то поменьше что ли?

Добавлено через 54 минуты
[Error] 'to_string' is not a member of 'std' во как исправить?
Или может кто предложит другое решение ?
0
MrCold
859 / 757 / 174
Регистрация: 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 / 2
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 02:13  [ТС] #5
ВО спасибо только(

Просто это лабораторная работа( я думал может как то попроще можно
0
Миниатюры
ООП(Класс обработчик определяет количественный состав элементов мебельного изделия и вычисляет площадь и стоимость изделия)  
dimadjs
1 / 1 / 2
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 02:45  [ТС] #6
а вот если без vector и iterator
0
MrCold
859 / 757 / 174
Регистрация: 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 / 2
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 02:59  [ТС] #8
сейчас пробую

Добавлено через 2 минуты
Все работает только quantity of elements: и пусто там количество должно быть же? если вам поможет то я на Dev C++ работаю(
0
MrCold
859 / 757 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
09.01.2013, 03:01 #9
Цитата Сообщение от dimadjs Посмотреть сообщение
там количество должно быть же?
Посмотри там выводится : 4 ножки и 1 сиденье
1
dimadjs
1 / 1 / 2
Регистрация: 12.06.2010
Сообщений: 49
09.01.2013, 03:02  [ТС] #10
а можно заменить как то vector ?
0
MrCold
859 / 757 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
09.01.2013, 03:06 #11
Ну на массив поменять . Мне лень ))) сразу предупреждаю .
0
dimadjs
1 / 1 / 2
Регистрация: 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
859 / 757 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
09.01.2013, 03:08 #13
dimadjs,

Не по теме:

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

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

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

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

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

изделия
Вероятность изделия быть бракованным равна 0,006. Чему равна вероятность...


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

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

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