Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <cstring>
- using namespace std;
- struct client {
- char name[20]; // имя клиента
- char phone_number[10]; // номер телефона
- int client_id; // id клиента
- int personal_discount; // размер скидки
- bool regular_customer; // постоянный покупатель (да / нет)
- };
- class client_base {
- public:
- client_base(): clients(new client*[100]), clients_number(0), clients_base_size(100) {}
- client_base(int new_base_size): clients(new client* [new_base_size]), clients_number(0), clients_base_size(new_base_size) {}
- client_base(const client_base& other): clients(new client* [other.clients_base_size]), clients_number(0), clients_base_size(other.clients_base_size) {
- for (int i = 0; i < other.clients_number; i++) {
- NewClient(other.clients[i]->name, other.clients[i]->phone_number, other.clients[i]->client_id, other.clients[i]->personal_discount, other.clients[i]->regular_customer);
- }
- }
- client_base(client_base&& other) {
- clients = other.clients;
- clients_number = other.clients_number;
- clients_base_size = other.clients_base_size;
- other.clients = nullptr;
- other.clients_number = 0;
- other.clients_base_size = 0;
- }
- client_base& operator=(const client_base& other) {
- if (this != &other) {
- for (int i = 0; i < clients_number; i++) {
- delete clients[i];
- }
- delete[] clients;
- clients = new client * [other.clients_base_size];
- clients_number = 0;
- clients_base_size = other.clients_base_size;
- for (int i = 0; i < other.clients_number; i++) {
- NewClient(other.clients[i]->name, other.clients[i]->phone_number, other.clients[i]->client_id, other.clients[i]->personal_discount, other.clients[i]->regular_customer);
- }
- }
- return *this;
- }
- client_base& operator=(client_base&& other) {
- if (this != &other) {
- for (int i = 0; i < clients_number; i++) {
- delete clients[i];
- }
- delete[] clients;
- clients = other.clients;
- other.clients = nullptr;
- clients_number = other.clients_number;
- other.clients_number = 0;
- clients_base_size = other.clients_base_size;
- other.clients_base_size = 0;
- }
- return *this;
- }
- void NewClient(const char name[], const char phone_number[], const int client_id, const int personal_discount, const bool regular_customer) {
- if (clients_number == clients_base_size) {
- client** temp = new client * [clients_base_size * 2];
- for (int i = 0; i < clients_number; i++) {
- temp[i] = clients[i];
- delete clients[i];
- }
- delete[] clients;
- clients = temp;
- clients_base_size *= 2;
- }
- clients[clients_number] = new client;
- strcpy(clients[clients_number]->name, name);
- strcpy(clients[clients_number]->phone_number, phone_number);
- clients[clients_number]->client_id = client_id;
- clients[clients_number]->personal_discount = personal_discount;
- clients[clients_number]->regular_customer = regular_customer;
- clients_number++;
- }
- void DelClient(const char name[]) {
- for (int i = 0; i < clients_number; i++) {
- if (!strcmp(clients[i]->name, name)) {
- delete clients[i];
- for (int j = i; j < clients_number - 1; j++) {
- clients[j] = clients[j + 1];
- }
- clients[clients_number - 1] = nullptr;
- clients_number--;
- }
- }
- }
- void FindClient(const char name[]) {
- for (int i = 0; i < clients_number; i++) {
- if (!strcmp(clients[i]->name, name)) {
- cout << clients[i]->name << ": phone " << clients[i]->phone_number << ", id " << clients[i]->client_id << ", personal discount " << clients[i]->personal_discount << " %";
- if (clients[i]->regular_customer) {
- cout << ", regular customer";
- }
- cout << endl;
- }
- }
- cout << endl;
- }
- void ShowAllClients() {
- for (int i = 0; i < clients_number; i++) {
- cout << clients[i]->name << ": phone " << clients[i]->phone_number << ", id " << clients[i]->client_id << ", personal discount " << clients[i]->personal_discount << " %";
- if (clients[i]->regular_customer) {
- cout << ", regular customer";
- }
- cout << endl;
- }
- cout << endl;
- }
- void ShowRegularClients() {
- for (int i = 0; i < clients_number; i++) {
- if (clients[i]->regular_customer) {
- cout << clients[i]->name << ": phone " << clients[i]->phone_number << ", id " << clients[i]->client_id << ", personal discount " << clients[i]->personal_discount << " %" << endl;
- }
- }
- cout << endl;
- }
- ~client_base() {
- for (int i = 0; i < clients_number; i++) {
- delete clients[i];
- }
- delete[] clients;
- }
- private:
- client** clients; // массив клиентов
- int clients_number; // количество клиентов
- int clients_base_size; // размер базы
- };
- int main() {
- client_base my_base(200);
- my_base.NewClient("Ivan", "9111111111", 1129, 10, true);
- my_base.NewClient("Vasya", "9111111222", 1130, 5, false);
- my_base.NewClient("Oleg", "9111111333", 1131, 15, true);
- my_base.NewClient("Maria", "9111111444", 1132, 10, false);
- my_base.NewClient("Galya", "9111111555", 1133, 20, true);
- //client_base my_base2(my_base);
- //client_base my_base2(move(my_base));
- client_base my_base2;
- //my_base2 = my_base;
- my_base2 = move(my_base);
- my_base2.ShowAllClients();
- my_base2.DelClient("Ivan");
- my_base2.ShowRegularClients();
- my_base2.FindClient("Galya");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement