1

Тема: Класи Клієнт і Черга з пріорітетом

Добрий вечір. Допоможіть розібратись. Завдання побудовано так:
Необхідно створити клас «клієнт».
який повинен містити такі поля:
1) Номер
2) Прізвище
3) Ім'я
4) Кількість років (скільки клієнт співпрацює з банком)
Необхідно створити клас «чергу з пріоритетом».
який повинен містити такі поля:
1) Покажчик на клас клієнт;
2) Пріоритет клієнта. Дане поле розраховується на основі поля «Кількість років» з класу клієнт і шкали пріоритетів описаної в постановці завдань;
3) Максимальний розмір черги;
4) Поточний розмір черги.
У мене виникла проблема, як засунути клієнтів з класу client в чергу?

2 Востаннє редагувалося Betterthanyou (08.01.2016 02:59:38)

Re: Класи Клієнт і Черга з пріорітетом

roman-skeba написав:

У мене виникла проблема, як засунути клієнтів з класу client в чергу?

За допомогою покажчика на клас клієнта (якщо я правильно зрозумів запитання)

у методі який додає новий елемент в чергу можна записати

cin>>покажчика_на_клас_клієнта.Номер;
...
cin>>покажчика_на_клас_клієнта.Кількість_років;
Прихований текст
аби ви показали код було б зрозуміліше

3 Востаннє редагувалося roman-skeba (08.01.2016 03:53:03)

Re: Класи Клієнт і Черга з пріорітетом

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 ();
    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 клієнтів, я їх ввів, пізніше мені потрібно визначити хто з них довше років в банку і додати їх в чергу по пріорітету, я створив класс черга, і тепер не розумію як мені їх обєднати, як в чергу добавити цих клієнтів, чи потрібно тепер в черзі створювати поля Прізвище, Імя і так дальше, чи можна якось через вказівники це все зробити.

4

Re: Класи Клієнт і Черга з пріорітетом

Наприклад так (але я не кажу що це точно правильний спосіб)
метод push прийме об'єкт класу Client,
в метод show скористатися obj.showClientInfo() для виведення клієнта і також вивести інші поля Queue

void Queue::push(Client *cl)
{
    obj = *cl;
}

void Queue::show()
{
    obj.showClientInfo();
    ...//тут виводяться інші поля
}

...

    
Client client1;
client1.setName();
client1.setFirstName();
client1.setNumber();
client1.setYearsInBank();

Queue queue1;

queue1.push(&client1);
queue1.show();

5

Re: Класи Клієнт і Черга з пріорітетом

А хіба воно взагалі щось в чергу записує, бо я щось не впевнений, і в мене помилка виконання))