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

Класс PriceList. Разработать программу формирования и распечатки прайс-листов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверка на зеркальное отражение строки http://www.cyberforum.ru/cpp-beginners/thread1163191.html
Для общения в полевых условиях используется система обмена сообщениями WhoDown. Так как вся связь в поле идет через радиоканал, а магнитная обстановка на поле нестабильна, то приходится передавать...
C++ Программа для моделирования Ж\Д составов cut Правила Форума: 5.18 Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.Перепечатывайте задание на форум http://www.cyberforum.ru/cpp-beginners/thread1163181.html
Является ли одномерный массив геометрической прогрессией? C++
Задан размер массива вещественных чисел и значения его элементов. Определить, являются ли его элементы членами геометрической прогрессии и вывести значение знаменателя прогрессии. Элементы исходного...
Двоичное представление символов ASCII C++
например дана последовательность: 0110100001101001 где h=01101000 i=01101001 ] numeric=0110100001101001 как сделать что то вроде cout<<char(numeric)-ну это так для разъяснения идеи) и программа...
C++ Вычисление количества элементов в списке http://www.cyberforum.ru/cpp-beginners/thread1163090.html
Здравствуйте! Нужно написать функцию, которая вычисляет количество элементов списка, расположенных в списке до заданного значения. Никак не могу понять, как это сделать
C++ Операция с функцией strtok_s #include <iostream> void Token(char *, int &, char *, char *); int main() { using namespace std; char *str = new char; char *word=NULL; char *token=NULL; int words = 0;... подробнее

Показать сообщение отдельно
Rifle
26 / 26 / 5
Регистрация: 15.11.2012
Сообщений: 93
Завершенные тесты: 4
09.05.2014, 16:14
1. Реализуйте метод добавления модели в классе Pricelist. Для этого вполне можете перегрузить оператор ввода, а можете использовать в виде обычного метода. Кому как удобнее. Суть метода - создаете новую модель, заполняете все ее поля и получившуюся готовую модель запихиваете в вектор list в классе Pricelist.
2. Да, конечно. До этого я писал лишь примерный код, т.к. вы просили только подсказать вам нужное направление. Поэтому несущественные для дела моменты я опустил. Номинал - это стоимость условной единицы в рублях. Номинал нужен для того, чтобы при выводе перевести все цены компьютеров (которые предположим, в рублях) в доллары. Если модель вашего компьютера стоит 7000 р., а номинал (доллар) в классе Pricelist указан, как 35 р., то при выводе должно получиться 200 долларов (номиналов).
3. Объединение прайс листов: создаете новый прайс-лист, копируете в него все модели из первого листа и все модели из второго листа, которых нет в первом (чтобы не было повторов), вот и все. Пересечение прайс листов: создаете новый прайс лист, сравниваете каждую модель первого прайс листа с каждой моделью второго листа и все повторы копируете в созданный лист.

Примерно вот что должен представлять из себя класс Pricelist:
Кликните здесь для просмотра всего текста
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
class Pricelist
    {
    private:
        vector<Model *> list;
        //Date date; (смотрите сами, как будете писать дату)
        int nominal;
    public:
        Model* add_model();
        Model* find_type(string type);
        Model* find_memory(int memory_size);
        Model* find_harddrive(int hard);
        Model* find_graphic(int graphic);
        void change_model(Model * m);
        void delete_model(Model * m);
        friend Pricelist* unite(Pricelist* first, Pricelist* second); //метод для пересечения листов
        friend Pricelist* operator+(Pricelist* first, Pricelist* second); //метод для объединения листов
    };
    
Model* Pricelist::add_model(Model * model)
    {
    //создавать модель будете в главной программе
    list.push_back(model);
    }
Model* Pricelist::find_type(string type)
    {
    for (int i=0; i<list.size(); i++)
        {
        if (list[i]->CPU_type == CPU_type)
            return list[i];
        }
    return 0;
    }
Model* Pricelist::find_memory(int memory_size)
    {
    for (int i=0; i<list.size(); i++)
        {
        if (list[i]->memory_size >= memory_size)
            return list[i];
        }
    return 0;
    }
Model* Pricelist::find_harddrive(int hard)
    {
    for (int i=0; i<list.size(); i++)
        {
        if (list[i]->harddisk_memory >= harddisk_memory)
            return list[i];
        }
    return 0;
    }
Model* Pricelist::find_graphic(int graphic)
    {
    for (int i=0; i<list.size(); i++)
        {
        if (list[i]->mgraphics_memory >= graphics)
            return list[i];
        }
    return 0;
    }
void Pricelist::change_model(Model * m)
    {
    Model * ptr = find_type(m->CPU_type);
    //меняете модель
    }
void Pricelist::delete_model(Model * m)
    {
    for (int i=0; i<list.size(); i++)
        if (list[i]->CPU_type = m->CPU_type)
            {
            delete list[i];
            list.erase(i); 
            return;
            }
    }
Pricelist* unite(Pricelist * first, Pricelist * second)
    {
    Pricelist * ptr = new Pricelist();
    for (int i=0; i<first->list.size(); i++)
        for (int j=0; j<second->list.size(); j++)
            if ((first->list[i])->CPU_type == (second->list[j])->CPU_type)
                {
                Model * n = new Model(*first->list[i]);
                ptr->add_model(n);
                }
    return ptr;
    }
Pricelist* operator+(Pricelist * first, Pricelist * second)
    {
    Pricelist * ptr = unite(first, second);
    for (int i=0; i<first->size(); i++)
        {
        bool good = true;
        for (int j=0; j<ptr->size(); j++)
            if ((first->list[i])->CPU_type == (ptr->list[j])->CPU_type)
                good = false;
        if (good)
            {
            Model * n = new Model(*first->list[i]);
            ptr->add_model(n);
            }
        }
    for (int i=0; i<second->size(); i++)
        {
        bool good = true;
        for (int j=0; j<ptr->size(); j++)
            if ((second->list[i])->CPU_type == (ptr->list[j])->CPU_type)
                good = false;
        if (good)
            {
            Model * n = new Model(*second->list[i]);
            ptr->add_model(n);
            }
        }       
    return ptr;
    }

Писал на коленке, так что за точность не ручаюсь. Но в любом случае нужное направление этот код уж точно должен подсказать. Здесь почти все сделано, вам только остается все переделать под свой пример и кое-где может чего подправить. Будут вопросы, пишите в личку.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru