Advertisement
Guest User

Untitled

a guest
May 29th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdlib>
  4. using namespace std;
  5.  
  6. struct Person
  7. {
  8.     char* name;
  9.     char* birth;
  10.     int number;
  11. }
  12.  
  13. template<class T>
  14. struct zapis {
  15.     int Key;
  16.     T Value;
  17.     zapis<T>* Next;
  18. };
  19.  
  20. template <class T>
  21. class Collection{
  22.    
  23. public:
  24.     zapis<T>* Head;
  25.  
  26.     Collection() {};
  27.     Collection (int key1, T value1){
  28.         zapis* temp = new Zapis;
  29.         Key = key1;
  30.         value = value1;
  31.     }
  32. };
  33.  
  34. class kniga{
  35.     private:
  36.         Collection<Person>* elem;
  37.         int index;
  38.     public:
  39.         kniga() {
  40.             index = 0;
  41.             elem = new Collection<Person>;
  42.         };
  43.         kniga(const char* Name, const char* Birth, int tel){
  44.             index = 1;
  45.             elem[index].value.name = new char[strlen(Name)+1];
  46.             strcpy(elem[index].value.name, Name);
  47.             elem[index].value.birth = new char[strlen(Birth)+1];
  48.             strcpy(elem[index].value.birth, Birth);
  49.             elem[index].value.number = tel;
  50.            
  51.         };
  52.         template <class T1>
  53.         void Add(T1 key1, zapis value1) {
  54.             index++;
  55.             elem = new Collection<T>;
  56.             elem[index] = elem (key1, value1);
  57.         };
  58.         template <class T2>
  59.         zapis Search (T2 key2) {
  60.             bool b = 0;
  61.             int l;
  62.             for (int i = 0; i<index; i++) {
  63.                 if ( (!(strcmp(key2,elem[i].value.name)))  || (!(strsmp(key2, elem[i].value.birth))) || (key2 == elem[i].value.number)) {
  64.                 b = 1;
  65.                 l = i;
  66.                 }
  67.             }
  68.             if (b) {return elem[l].value;}
  69.             else {
  70.             cout <<"Записи не найдено" <<endl;
  71.             return 0;
  72.             }
  73.         };
  74.        
  75.         bool k;
  76.         void Bubble(char* length1, char* length2){
  77.             k=0;
  78.             for (int j=0; j<strlen(length1); j++){
  79.                 if (length1[j]>length2[j]) k=1;
  80.             }
  81.             if (k) {
  82.                 char* temp = new char[255];
  83.                 strcpy(temp, length1);
  84.                 strcpy(length1, length2);
  85.                 strcpy(length2, temp);
  86.                 delete[] temp;
  87.             }
  88.  
  89.         }
  90.         void Sorting(int a){
  91.             switch (a) {
  92.             case 5: {
  93.                 k=1;
  94.                 while (k) {
  95.                 k=0;
  96.                 for (int i=0; i<index; i++) {
  97.                 Bubble(elem[i].value.name, elem[i+1].value.name);                  
  98.                 }
  99.                 }
  100.                 break;
  101.             }
  102.             case 6: {
  103.                 k=1;
  104.                 while (k) {
  105.                 k=0;
  106.                 for (int i=0; i<index; i++) {
  107.                 Bubble(elem[i].value.birth, elem[i+1].value.birth);                
  108.                 }
  109.                 }
  110.                 break;
  111.                   }
  112.             case 7: {
  113.                 bool b = false;
  114.                 while (!b) {
  115.                     for (int i=0; i<(index-1); i++) {
  116.                         if (elem[i].value.number > elem[i+1].value.number) {
  117.                             int c = elem[i+1].value.number;
  118.                             elem[i+1].value.number = elem[i].value.number;
  119.                             elem[i].value.numbet = c;
  120.                             b = true;
  121.                         }
  122.                     }
  123.                 }
  124.                 break;
  125.                   }
  126.             }
  127.         }
  128.         ~kniga(){
  129.             delete[] elem;
  130.         };
  131. };
  132.  
  133.  
  134.  
  135. int main() {
  136.     setlocale(LC_ALL, "Russian");
  137. //  kniga<char*> MyBook;
  138.     zapis contact;
  139. //  char* name1 = new char[255];
  140. //  char* birth1 = new char[255];
  141. //  int number1;
  142.     getchar();
  143.     cin.getline(contact.name, 255);
  144.     getchar();
  145.     cin.getline(contact.birth, 255);
  146.     cin >> contact.number;
  147.     kniga<char*> MyNumbers;
  148.     kniga<int> MyNumbers1;
  149.     MyNumbers.Add<char*>(contact.name, contact);
  150.     MyNumbers1.Add<int>(contact.number, contact);
  151. //  kniga<char*> MyNumbers(name1, birth1, number1);
  152.     /*
  153.     cout << "Введите количество книг" <<endl;
  154.     int kol;
  155.     cin >> kol;
  156.     */
  157.     cout << "Выберите, что нужно сделать:" <<endl
  158.     << "1 - Поиск по имени " <<endl
  159.     << "2 - Поиск по дате рождения" <<endl
  160.     << "3 - Поиск по номеру телефона" <<endl
  161.     << "4 - Добавить запись" <<endl
  162.     << "5 - Сортировать по имени"<<endl
  163.     << "6 - Сортировать по дате рождения" <<endl
  164.     << "7 - Сортировать по номеру телефона" <<endl
  165.     << "0 - Вывести на экран все записи" <<endl;
  166.     int h;
  167.     cin >> h;
  168.     switch (h)
  169.                 {
  170.                         case 1 : {
  171.                                 cout << "Введите имя" <<endl;
  172.                                 char* stn = new char[255];
  173.                                 getchar();
  174.                                 cin.getline(stn, 255);
  175.  
  176.                                 break;
  177.                         }
  178.                         case 2 : {
  179.                                
  180.                                 break;
  181.                         }
  182.                         case 3 : {
  183.                                
  184.                                 break;
  185.                         }
  186.                         case 4 : {
  187.                                
  188.                             //    MyNumbers.Add<char*>()
  189.                                 break;
  190.                         }
  191.                         case 5 : {
  192.                                
  193.                                 break;
  194.                         }
  195.                         case 6 : {
  196.                                
  197.                                 break;
  198.                         }
  199.                         case 7 : {
  200.                                
  201.                                 break;
  202.                         }
  203.                        
  204.                         case 0 : {
  205.                                
  206.                                 break;
  207.                         }
  208.                         default : {
  209.                                 cout << "Вы ввели неправильный вариант. Попробуйте еще раз." <<endl;
  210.                         }
  211.     }
  212.     system ("pause");
  213.     return 0;
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement