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

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

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

Классы Клиент и Очередь с приоритетом - C++

08.01.2016, 12:44. Просмотров 322. Ответов 15
Метки нет (Все метки)

Добрый день. Помогите разобраться. Задания построено так:
Необходимо создать класс « клиент».
который должен содержать следующие поля:
1) Номер
2) Фамилия
3) Имя
4) Количество лет (сколько клиент сотрудничает с банком )
Необходимо создать класс « очередь с приоритетом ».
который должен содержать следующие поля:
1) Указатель на класс клиент ;
2) Приоритет клиента. Данная поле рассчитывается на основе поля «Количество лет » из класса клиент и шкалы приоритетов описанной в постановке задач ;
3) Максимальный размер очереди ;
4) Текущий размер очереди.
Мой код:
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
class Client
{
private:
    char *firstname;
    char *name;
    int number;
    int year;
public:
    Client ();
    void setFirstName ();
    void setName ();
    void setNumber ();
    void setYearsInBank ();
    void showClientInfo ();
    ~Client ();
};
Client::Client ()
{
    this->firstname=new char [100];
    this->name=new char [100];
    this->number=this->year=0;
}
void Client::setFirstName ()
{
    cout<<"Firstname: ";
    cin>>this->firstname;
}
void Client::setName ()
{
    cout<<"Name: ";
    cin>>this->name;
}
void Client::setNumber ()
{
    static int _number=1;
    this->number=_number;
    _number++;
}
void Client::setYearsInBank ()
{
    this->year=rand()%12;
}
void Client::showClientInfo ()
{
    cout<<"--------------------------------"<<endl;
    cout<<"Firstname: ";
    cout<<this->firstname<<endl;
    cout<<"Name: ";
    cout<<this->name<<endl;
    cout<<"Number: ";
    cout<<this->number<<endl;
    cout<<"Years in bank: ";
    cout<<this->year<<endl;
}
Client::~Client ()
{
    delete this->firstname;
    delete this->name;
}
class Queue
{
private:
    Client obj;
    int *ptr;
    int maxSize;
    int currentSize;
public:
    Queue ();
    bool full();
    bool empty();
    int getSize ();
    void push (Client *obj);
    void show();
    int pop();
    ~Queue ();
};
Queue::Queue()
{
    this->maxSize = 10;
    this->ptr = new int[this->maxSize];
    this->currentSize = 0;
}
bool Queue::full()
{
    return this->currentSize == this->maxSize;
}
bool Queue::empty()
{
    return this->currentSize == 0;
}
int Queue::getSize ()
{
    return this->currentSize;
}
Я создал класс клиент, например у меня 5 клиентов , я их ввел , позже мне нужно определить кто из них дольше лет в банке и добавить их в очередь за приоритета , я создал класс очередь , и теперь не понимаю как мне их объединить , как в очередь добавить этих клиентов , нужно теперь в очереди создавать поля Фамилия , Имя и так далее , или можно как-то через указатели это все сделать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2016, 12:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Классы Клиент и Очередь с приоритетом (C++):

Очередь с приоритетом. Элементы с наивысшим приоритетом ставятся в начало очереди, с наименьшим – в конец - C++
Здравствуйте! имеется задание: создать очередь с приоритетом (у каждого элемента свой приоритет). Элементы с наивысшим приоритетом ставятся...

Очередь с приоритетом - C++
Доброго времени суток, дорогие программисты, вот сдаю экзамены, попался такой вопрос &quot;Очередь с приоритетом. Основные операции для работы с...

Очередь с приоритетом - C++
как реализовать очередь с приоритетом на бинарной куче?при том нужно графически вывести на консоль т.к я поняла графический вывод...

Очередь с приоритетом - C++
есть очередь #include &lt;iostream&gt; #include &lt;queue&gt; using namespace std; int main() { priority_queue&lt;float&gt; q; ...

Очередь с приоритетом - C++
Здравствуйте! Помогите, пожалуйста! Мне нужно реализовать приоритетную очередь через дерево списков с указанием приоритетов и...

Очередь с приоритетом - C++
Здравствуйте! Пожалуйста, если кто-то может, то помогите с задачей. Задач из книги А. Шень &quot;Программирование: теоремы и задачи&quot;. 2004 г. -...

15
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
08.01.2016, 12:51 #2
Цитата Сообщение от Restartuk Посмотреть сообщение
1) Указатель на класс клиент ;
C++
1
2
3
4
5
6
class Queue { 
private: Client* obj;
//int *ptr; 
int maxSize; 
int currentSize;
 public
0
Hikari
Хитрая блондиночка $)
1450 / 958 / 285
Регистрация: 21.12.2015
Сообщений: 3,785
08.01.2016, 12:54 #3
Цитата Сообщение от Restartuk Посмотреть сообщение
Необходимо создать класс « очередь с приоритетом ».
Использовать класс STL Queue запрещено?
0
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 12:56  [ТС] #4
Да там я опечатку сделал, а как мне именно добавить это все безобразия в очередь?

Добавлено через 1 минуту
Да, запрещено, там именно нужно все самому писать.
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
08.01.2016, 13:03 #5
Тут оператор присваивания надо в классе Client написать
0
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 13:13  [ТС] #6
C++
1
2
3
4
5
6
7
Client::Client(const Client& client_obj)
{
    strcpy (firstname,this->firstname);
    strcpy (name,this->name);
    number=this->number;
    year=this->year;
}
Такой, да?
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
08.01.2016, 13:18 #7
такой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Client & operator= (const Client & other)
    {
        if (this != &other) // protect against invalid self-assignment
        {
           strcpy(firstname, other.firstname);
           strcpy(name, other.name);
           number = other.number;
           year = other.year;
 
        }
        // by convention, always return *this
        return *this;
    }
Добавлено через 1 минуту
а потом в методе push следующее:
C++
1
2
3
4
5
void Queue::push (const Client &cl)
{
    this->obj[currentSize] = cl;
    currentSize++;
}
0
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 13:20  [ТС] #8
Блин я идиот, конструктор написал....

Добавлено через 1 минуту
А как потом вывести очередь?
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
08.01.2016, 13:36 #9
C++
1
2
3
4
5
6
void Queue::show ()
{
    for(int i = 0; i != currentSize; i++)
    obj[i].showClientInfo() ;
 
}
0
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 13:41  [ТС] #10
C++
1
strcpy(firstname, other.firstname);
вылетает ошибка выполнения(
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
08.01.2016, 13:46 #11
и что говорит ошибка?

Добавлено через 4 минуты
#include <cstring> подключил?
0
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 13:58  [ТС] #12
Классы Клиент и Очередь с приоритетом
#include <cstring> подключил
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
08.01.2016, 14:02 #13
#include <cstring> подключено?
0
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 14:09  [ТС] #14
Да, подключено.
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
08.01.2016, 14:22 #15
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <cstring>
#include <stdlib.h>
using namespace std;
class Client
{
private:
    char *firstname;
    char *name;
    int number;
    int year;
public:
    Client ();
    void setFirstName ();
    void setName ();
    void setNumber ();
    void setYearsInBank ();
    void showClientInfo ();
    ~Client ();
     Client & operator= (const Client & other)
    {
        if (this != &other) // protect against invalid self-assignment
        {
           strcpy(firstname, other.firstname);
           strcpy(name, other.name);
           number = other.number;
           year = other.year;
 
        }
        // by convention, always return *this
        return *this;
    }
};
Client::Client ()
{
    this->firstname=new char [100];
    this->name=new char [100];
    this->number=this->year=0;
}
void Client::setFirstName ()
{
    cout<<"Firstname: ";
    cin>>this->firstname;
}
void Client::setName ()
{
    cout<<"Name: ";
    cin>>this->name;
}
void Client::setNumber ()
{
    static int _number=1;
    this->number=_number;
    _number++;
}
void Client::setYearsInBank ()
{
    this->year=rand()%12;
}
void Client::showClientInfo ()
{
    cout<<"--------------------------------"<<endl;
    cout<<"Firstname: ";
    cout<<this->firstname<<endl;
    cout<<"Name: ";
    cout<<this->name<<endl;
    cout<<"Number: ";
    cout<<this->number<<endl;
    cout<<"Years in bank: ";
    cout<<this->year<<endl;
}
Client::~Client ()
{
    delete this->firstname;
    delete this->name;
}
class Queue
{
private:
    Client* obj;
    int maxSize;
    int currentSize;
public:
    Queue ();
    bool full();
    bool empty();
    int getSize ();
    void push (const Client &cl);
    void show();
    int pop();
    ~Queue ();
};
Queue::Queue()
{
    this->maxSize = 10;
    this->obj = new Client[this->maxSize];//////
    this->currentSize = 0;
}
bool Queue::full()
{
    return this->currentSize == this->maxSize;
}
bool Queue::empty()
{
    return this->currentSize == 0;
}
int Queue::getSize ()
{
    return this->currentSize;
}
void Queue::push (const Client &cl)
{
    this->obj[currentSize] = cl;
    currentSize++;
}
void Queue::show ()
{
    for(int i = 0; i != currentSize; i++)
    obj[i].showClientInfo() ;
 
}
Queue::~Queue (){
delete[] obj;
}
int main()
{
    Client cl, cl2;
    cl2.setFirstName();
    cl2.setName();
    cl = cl2;
    Queue q;
    q.push(cl2);
    q.show();
    return 0;
}
вот такой вариант работает
1
08.01.2016, 14:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2016, 14:22
Привет! Вот еще темы с ответами:

Очередь с приоритетом - C++
Всем привет . Собственно нужно организовать очередь с приоритетом. Задание: В офисе один принтер, на печать должны подоватся те...

Очередь с приоритетом - C++
У меня есть задание: 9. Разработать шаблон класса для работы с очередью с приоритетами, выполненной в виде односвязного списка. Тип...

Очередь с приоритетом. - C++
Добрый день. Возникла небольшая проблема. У нас есть текстовый файл содержащий следующую числовую информацию: Так вот необходимо...

Очередь с приоритетом - C++
Здравствуйте! Нужна ваша помощь! Не могу разобраться в чём проблема. Создаю очередь с приоритетом(шаблонный класс) с типом данных Job....


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

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

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