Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 91
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый день. Помогите разобраться. Задания построено так:
Необходимо создать класс « клиент».
который должен содержать следующие поля:
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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2016, 12:44
Ответы с готовыми решениями:

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

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

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

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

15
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
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
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
08.01.2016, 12:54 3
Цитата Сообщение от Restartuk Посмотреть сообщение
Необходимо создать класс « очередь с приоритетом ».
Использовать класс STL Queue запрещено?
0
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 12:56  [ТС] 4
Да там я опечатку сделал, а как мне именно добавить это все безобразия в очередь?

Добавлено через 1 минуту
Да, запрещено, там именно нужно все самому писать.
0
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
08.01.2016, 13:03 5
Тут оператор присваивания надо в классе Client написать
0
1 / 1 / 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
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
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
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 13:20  [ТС] 8
Блин я идиот, конструктор написал....

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

Добавлено через 4 минуты
#include <cstring> подключил?
0
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 13:58  [ТС] 12
Классы Клиент и Очередь с приоритетом

#include <cstring> подключил
0
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
08.01.2016, 14:02 13
#include <cstring> подключено?
0
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 14:09  [ТС] 14
Да, подключено.
0
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
08.01.2016, 14:22 15
Лучший ответ Сообщение было отмечено Restartuk как решение

Решение

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
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 91
08.01.2016, 14:32  [ТС] 16
Все я разобрался, спасибо большое)))
0
08.01.2016, 14:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2016, 14:32
Помогаю со студенческими работами здесь

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

Очередь с приоритетом
Вообщем есть задание найти и описать проблему : Given a priority queue with the following...

Очередь с приоритетом
Разработать функции работы с приоритетной очередью. Постановка запросов в очередь выполняется по...

Очередь с приоритетом
Всем привет . Собственно нужно организовать очередь с приоритетом. Задание: В офисе один...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru