Advertisement
35657

Untitled

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