35657

Untitled

Jun 10th, 2023
758
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.64 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <iostream>
  4. #include <cstring>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. struct client {
  10.     char name[20]; // имя клиента
  11.     char phone_number[10]; // номер телефона
  12.     int client_id; // id клиента
  13.     int personal_discount; // размер скидки
  14.     bool regular_customer; // постоянный покупатель (да / нет)
  15. };
  16.  
  17. class client_base {
  18.  
  19. public:
  20.     client_base() {
  21.         clients = new client * [100];
  22.         clients_number = 0;
  23.         clients_base_size = 100;
  24.     }
  25.  
  26.     client_base(int new_base_size) {
  27.         clients = new client * [new_base_size];
  28.         clients_number = 0;
  29.         clients_base_size = new_base_size;
  30.     }
  31.  
  32.     void NewClient(const char name[], const char phone_number[], const int client_id, const int personal_discount, const bool regular_customer) {
  33.         if (clients_number == clients_base_size) {
  34.             client** temp = new client * [clients_base_size * 2];
  35.             for (int i = 0; i < clients_number; i++) {
  36.                 temp[i] = clients[i];
  37.                 delete clients[i];
  38.             }
  39.             delete[] clients;
  40.             clients = temp;
  41.             clients_base_size *= 2;
  42.         }
  43.         clients[clients_number] = new client;
  44.         strcpy(clients[clients_number]->name, name);
  45.         strcpy(clients[clients_number]->phone_number, phone_number);
  46.         clients[clients_number]->client_id = client_id;
  47.         clients[clients_number]->personal_discount = personal_discount;
  48.         clients[clients_number]->regular_customer = regular_customer;
  49.         clients_number++;
  50.     }
  51.  
  52.     void DelClient(const char name[]) {
  53.         for (int i = 0; i < clients_number; i++) {
  54.             if (!strcmp(clients[i]->name, name)) {
  55.                 delete clients[i];
  56.                 for (int j = i; j < clients_number - 1; j++) {
  57.                     clients[j] = clients[j + 1];
  58.                 }
  59.                 clients[clients_number - 1] = nullptr;
  60.                 clients_number--;
  61.             }
  62.         }
  63.  
  64.     }
  65.  
  66.     void FindClient(const char name[]) {
  67.         for (int i = 0; i < clients_number; i++) {
  68.             if (!strcmp(clients[i]->name, name)) {
  69.                 cout << clients[i]->name << ": phone " << clients[i]->phone_number << ", id " << clients[i]->client_id << ", personal discount " << clients[i]->personal_discount << " %";
  70.                 if (clients[i]->regular_customer) {
  71.                     cout << ", regular customer";
  72.                 }
  73.                 cout << endl;
  74.             }
  75.         }
  76.         cout << endl;
  77.     }
  78.  
  79.     void ShowAllClients() {
  80.         for (int i = 0; i < clients_number; i++) {
  81.             cout << clients[i]->name << ": phone " << clients[i]->phone_number << ", id " << clients[i]->client_id << ", personal discount " << clients[i]->personal_discount << " %";
  82.             if (clients[i]->regular_customer) {
  83.                 cout << ", regular customer";
  84.             }
  85.             cout << endl;
  86.         }
  87.         cout << endl;
  88.     }
  89.  
  90.     void ShowRegularClients() {
  91.         for (int i = 0; i < clients_number; i++) {
  92.             if (clients[i]->regular_customer) {
  93.                 cout << clients[i]->name << ": phone " << clients[i]->phone_number << ", id " << clients[i]->client_id << ", personal discount " << clients[i]->personal_discount << " %" << endl;
  94.             }
  95.         }
  96.         cout << endl;
  97.     }
  98.  
  99.     ~client_base() {
  100.         for (int i = 0; i < clients_number; i++) {
  101.             delete clients[i];
  102.         }
  103.         delete[] clients;
  104.     }
  105.  
  106.  
  107. private:
  108.     client** clients; // массив клиентов
  109.     int clients_number; // количество клиентов
  110.     int clients_base_size; // размер базы
  111. };
  112.  
  113.  
  114. int main() {
  115.     client_base my_base(200);
  116.     my_base.NewClient("Ivan", "9111111111", 1129, 10, true);
  117.     my_base.NewClient("Vasya", "9111111222", 1130, 5, false);
  118.     my_base.NewClient("Oleg", "9111111333", 1131, 15, true);
  119.     my_base.NewClient("Maria", "9111111444", 1132, 10, false);
  120.     my_base.NewClient("Galya", "9111111555", 1133, 20, true);
  121.     my_base.ShowAllClients();
  122.     my_base.DelClient("Ivan");
  123.     my_base.ShowRegularClients();
  124.     my_base.FindClient("Galya");
  125. }
Advertisement
Add Comment
Please, Sign In to add comment