Advertisement
35657

Untitled

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