Advertisement
35657

Untitled

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