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

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

Восстановить пароль Регистрация
 
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 80
08.01.2016, 12:44     Классы Клиент и Очередь с приоритетом #1
Добрый день. Помогите разобраться. Задания построено так:
Необходимо создать класс « клиент».
который должен содержать следующие поля:
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 клиентов , я их ввел , позже мне нужно определить кто из них дольше лет в банке и добавить их в очередь за приоритета , я создал класс очередь , и теперь не понимаю как мне их объединить , как в очередь добавить этих клиентов , нужно теперь в очереди создавать поля Фамилия , Имя и так далее , или можно как-то через указатели это все сделать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2016, 12:44     Классы Клиент и Очередь с приоритетом
Посмотрите здесь:

Очередь с приоритетом. C++
Очередь с приоритетом C++
Очередь с приоритетом C++
C++ Очередь с приоритетом
Очередь с приоритетом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
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
Hikari
Хитрая блондиночка $)
 Аватар для Hikari
1336 / 899 / 272
Регистрация: 21.12.2015
Сообщений: 3,599
08.01.2016, 12:54     Классы Клиент и Очередь с приоритетом #3
Цитата Сообщение от Restartuk Посмотреть сообщение
Необходимо создать класс « очередь с приоритетом ».
Использовать класс STL Queue запрещено?
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 80
08.01.2016, 12:56  [ТС]     Классы Клиент и Очередь с приоритетом #4
Да там я опечатку сделал, а как мне именно добавить это все безобразия в очередь?

Добавлено через 1 минуту
Да, запрещено, там именно нужно все самому писать.
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
08.01.2016, 13:03     Классы Клиент и Очередь с приоритетом #5
Тут оператор присваивания надо в классе Client написать
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 80
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;
}
Такой, да?
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
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++;
}
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 80
08.01.2016, 13:20  [ТС]     Классы Клиент и Очередь с приоритетом #8
Блин я идиот, конструктор написал....

Добавлено через 1 минуту
А как потом вывести очередь?
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
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() ;
 
}
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 80
08.01.2016, 13:41  [ТС]     Классы Клиент и Очередь с приоритетом #10
C++
1
strcpy(firstname, other.firstname);
вылетает ошибка выполнения(
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
08.01.2016, 13:46     Классы Клиент и Очередь с приоритетом #11
и что говорит ошибка?

Добавлено через 4 минуты
#include <cstring> подключил?
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 80
08.01.2016, 13:58  [ТС]     Классы Клиент и Очередь с приоритетом #12
Классы Клиент и Очередь с приоритетом
#include <cstring> подключил
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
08.01.2016, 14:02     Классы Клиент и Очередь с приоритетом #13
#include <cstring> подключено?
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 80
08.01.2016, 14:09  [ТС]     Классы Клиент и Очередь с приоритетом #14
Да, подключено.
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
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;
}
вот такой вариант работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2016, 14:32     Классы Клиент и Очередь с приоритетом
Еще ссылки по теме:

C++ Очередь с приоритетом. Элементы с наивысшим приоритетом ставятся в начало очереди, с наименьшим – в конец
C++ Очередь с приоритетом
C++ Очередь с приоритетом

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

Или воспользуйтесь поиском по форуму:
Restartuk
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 80
08.01.2016, 14:32  [ТС]     Классы Клиент и Очередь с приоритетом #16
Все я разобрался, спасибо большое)))
Yandex
Объявления
08.01.2016, 14:32     Классы Клиент и Очередь с приоритетом
Ответ Создать тему
Опции темы

Текущее время: 11:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru