35657

Untitled

Jun 1st, 2024
573
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.60 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct client {
  6.     char name[30]; // имя клиента
  7.     char phone_number[20]; // номер телефона
  8.     int client_id; // id клиента
  9.     int personal_discount; // размер скидки
  10.     bool regular_customer; // постоянный покупатель (да / нет)
  11. };
  12.  
  13. class client_base {
  14.  
  15. public:
  16.  
  17.     client_base() {
  18.         clients = new client[5];
  19.         clients_number = 0;
  20.         clients_base_size = 5;
  21.     }
  22.  
  23.     client_base(const int size) {
  24.         clients = new client[size];
  25.         clients_number = 0;
  26.         clients_base_size = size;
  27.     }
  28.  
  29.     void new_client(const char* name, const char* phone_number, const int client_id, const int personal_discount, const bool regular_customer) {
  30.         if (clients_number == clients_base_size) {
  31.             client* temp = new client[clients_base_size * 2];
  32.             for (int i = 0; i < clients_number; i++) {
  33.                 temp[i] = clients[i];
  34.             }
  35.             delete[] clients;
  36.             clients = temp;
  37.             clients_base_size *= 2;
  38.         }
  39.         strcpy(clients[clients_number].name, name);
  40.         strcpy(clients[clients_number].phone_number, phone_number);
  41.         clients[clients_number].client_id = client_id;
  42.         clients[clients_number].personal_discount = personal_discount;
  43.         clients[clients_number].regular_customer = regular_customer;
  44.         clients_number++;
  45.     }
  46.  
  47.     void del_client(const char* name) {
  48.         for (int i = 0; i < clients_number; i++) {
  49.             if (!strcmp(clients[i].name, name)) {
  50.                 for (int j = i; j < clients_number - 1; j++) {
  51.                     clients[j] = clients[j + 1];
  52.                 }
  53.                 clients_number--;
  54.             }
  55.         }
  56.     }
  57.  
  58.  
  59.     void find_client(const char* name) {
  60.         for (int i = 0; i < clients_number; i++) {
  61.             if (!strcmp(clients[i].name, name)) {
  62.                 print_client(clients[i]);
  63.             }
  64.         }
  65.         cout << endl;
  66.     }
  67.  
  68.     void show_all_clients() {
  69.         for (int i = 0; i < clients_number; i++) {
  70.             print_client(clients[i]);
  71.         }
  72.         cout << endl;
  73.     }
  74.  
  75.     void show_regular_clients() {
  76.         for (int i = 0; i < clients_number; i++) {
  77.             if (clients[i].regular_customer) {
  78.                 print_client(clients[i]);
  79.             }
  80.         }
  81.         cout << endl;
  82.     }
  83.  
  84.     ~client_base() {
  85.         delete[] clients;
  86.     }
  87.  
  88. private:
  89.  
  90.     void print_client(const client& cl) {
  91.         cout << cl.name << " " << cl.phone_number << " " << cl.client_id << " " << cl.personal_discount;
  92.         if (cl.regular_customer) {
  93.             cout << " постоянный покупатель";
  94.         }
  95.         cout << endl;
  96.     }
  97.  
  98.     client* clients; // динамический массив клиентов
  99.     int clients_number; // количество клиентов
  100.     int clients_base_size; // текущий максимальный размер базы
  101. };
  102.  
  103. int main() {
  104.  
  105.     setlocale(LC_ALL, "ru");
  106.  
  107.     client_base my_base(200);
  108.  
  109.     my_base.new_client("Иван", "+79111111111", 1129, 10, true);
  110.     my_base.new_client("Вася", "+79111111222", 1130, 5, false);
  111.     my_base.new_client("Олег", "+79111111333", 1131, 15, true);
  112.     my_base.new_client("Мария", "+79111111444", 1132, 10, false);
  113.     my_base.new_client("Галя", "+79111111555", 1133, 20, true);
  114.     my_base.show_all_clients();
  115.  
  116.     my_base.del_client("Иван");
  117.     my_base.show_regular_clients();
  118.  
  119.     my_base.find_client("Галя");
  120. }
  121.  
  122.  
Advertisement
Add Comment
Please, Sign In to add comment