Advertisement
35657

Untitled

May 26th, 2023
1,026
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.51 KB | None | 0 0
  1.  
  2.  
  3. Лилия есть ряд моментов:
  4.  
  5. 1) для класса phone_book использование в качестве поля статического массива - не самый лучший выбор, так как размер статических элементов должен быть заранее определен и не может меняться по ходу выполнения программы. Если вы хотите использовать статический массив, то можете просто удалить все конструкторы и деструктор и оставить прямую инициализацию полей, как у вас это и описано. Либо перейти на использование динамического массива в качестве поля класса. У структур, которые мы использовали в прошлых заданиях, просто не было конструкторов и методов, поэтому там можно было все делать на стеке.
  6.  
  7. 2) во всех методах класса стоит удалить параметр phone_book & my_book так как эти методы уже вызываются из класса и им не надо указывать в качестве параметра к какому именно классу нужно обращаться, пример реализации метода:
  8.  
  9. void AddAbonent(const char name[], const char home_phone[], const char work_phone[], const char mob_phone[]) {
  10.     if (abonents_namber == max_abonents_nummber) {
  11.         cout << "Абонент не может быть добавлен " << endl;
  12.         return;
  13.     }
  14.     strcpy(lines[abonents_namber].name, name);
  15.     strcpy(lines[abonents_namber].home_phone, home_phone);
  16.     strcpy(lines[abonents_namber].work_phone, work_phone);
  17.     strcpy(lines[abonents_namber].mob_phone, mob_phone);
  18.     abonents_namber++;
  19. }
  20.  
  21. 3) у вас по тексту проскакивает то "namber" то "nummber" лучше привести все к одному виду, например "number"
  22.  
  23.  
  24. #define _CRT_SECURE_NO_WARNINGS
  25. #include <iostream>
  26. #include<clocale>
  27. #include<string.h>
  28.  
  29. using namespace std;
  30.  
  31. struct abonent {
  32.     char name[50]{};
  33.     char home_phone[15]{};
  34.     char work_phone[15]{};
  35.     char mob_phone[15]{};
  36.  
  37. };
  38.  
  39. class phone_book {
  40.  
  41.     //phone_book()
  42.  
  43. public:
  44.     //phone_book() : lines[]{},
  45.     //phone_book(int max_abonents_number) : {}
  46.     //phone_book(lines[], int abonents_number, int max_abonents_number) : {}
  47.  
  48.  
  49.     void AddAbonent(phone_book& my_book, const char name[], const char home_phone[], const char work_phone[], const char mob_phone[]) {
  50.         if (abonents_namber == max_abonents_nummber) {
  51.             cout << "Абонент не может быть добавлен " << endl;
  52.             return;
  53.         }
  54.         strcpy(my_book.abonents_namber[my_book.lines].name, name);
  55.         strcpy(my_book.abonents_namber[my_book.lines].home_phone, home_phone);
  56.         strcpy(my_book.abonents_namber[my_book.lines].work_phone, work_phone);
  57.         strcpy(my_book.abonents_namber[my_book.lines].mob_phone, mob_phone);
  58.         my_book.abonents_namber++;
  59.     }
  60.  
  61.     void ShowAllAbonents(phone_book& my_book) {
  62.         cout << "Вся моя телефонная книга: " << endl;
  63.         for (int i = 0; i < my_book.abonents_namber; i++) {
  64.             cout << '\"' << my_book.lines[i].name << "\", home_phone: " << my_book.lines[i].home_phone << ", work_phone: " << my_book.lines[i].work_phone << ", mob_phone: " << my_book.lines[i].mob_phone << endl;
  65.         }
  66.         cout << endl;
  67.  
  68.     }
  69.  
  70.     void DelAbonents(phone_book& my_book, const char name[]) {
  71.         for (int i = 0; i < my_book.abonents_namber; i++) {
  72.             if (!strcmp(my_book.lines[i].name, name)) {
  73.                 for (int j = i; j < my_book.abonents_namber - 1; j++) {
  74.                     my_book.lines[j] = my_book.lines[j + 1];
  75.                 }
  76.                 abonents_namber--;
  77.             }
  78.         }
  79.     }
  80.  
  81.     void FindAbonentName(phone_book& my_book, const char name[]) {
  82.         cout << "По вашему запросу найдено: " << endl;
  83.         for (int i = 0; i < my_book.max_abonents_nummber; i++) {
  84.             if (!strcmp(my_book.lines[i].name, name)) {
  85.                 cout << '\"' << my_book.lines[i].name << "\", home_phone: " << my_book.lines[i].home_phone << ", work_phone: " << my_book.lines[i].work_phone << ", mob_phone: " << my_book.lines[i].mob_phone << endl;
  86.             }
  87.         }
  88.         cout << endl;
  89.     }
  90.  
  91.     //~lines();
  92.  
  93. private:
  94.     abonent lines[100]{};
  95.     int abonents_namber = 0;
  96.     int max_abonents_nummber = 100;
  97.  
  98. };
  99.  
  100.  
  101.  
  102.  
  103.  
  104. int main()
  105. {
  106.     setlocale(LC_ALL, "Russian");
  107.     phone_book my_book;
  108.  
  109.     my_book.AddAbonent(my_book, "Ivan", "365963", "470047", "+79998765432");
  110.     my_book.AddAbonent(my_book, "Petr", "658305", "385326", "+79148436633");
  111.     my_book.AddAbonent(my_book, "Cidor", "250025", "230023", "+79248735505");
  112.     my_book.AddAbonent(my_book, "Natasha", "252837", "370042", "+79245450568");
  113.     my_book.AddAbonent(my_book, "Elena", "253131", "239223", "+79628737621");
  114.     my_book.AddAbonent(my_book, "Olga", "360215", "230023", "+79243335505");
  115.  
  116.     my_book.ShowAllAbonents(my_book);
  117.  
  118.     my_book.DelAbonents(my_book, "Petr");
  119.  
  120.     my_book.ShowAllAbonents(my_book);
  121.  
  122.     my_book.FindAbonentName(my_book, "Elena");
  123.  
  124. }
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement