Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.80 KB | None | 0 0
  1. class CarsRegister
  2. {
  3. private:
  4.     static vector<Person*> personsByName[26];
  5. /////
  6.     static void clearPersonsByName()
  7.     {
  8.         for (int i = 0; i < 26; i++)
  9.         {
  10.             while (!personsByName[i].empty())
  11.             {
  12.                 personsByName[i].erase(personsByName[i].end()-1);
  13.             }
  14.  
  15.             personsByName[i].clear();
  16.         }
  17.     }
  18.  
  19. /////
  20.     static void addPersonToNamesList(Person * person)
  21.     {
  22.         int start_letter_index = (int)(tolower(person->getName()[0])) - 97;
  23.         if (start_letter_index >= 0 && start_letter_index <= 25)
  24.         {
  25.            personsByName[start_letter_index].push_back(person);
  26.         }
  27.         else
  28.         {
  29.             throw "Invalid person name detected (no first letter)";
  30.         }
  31.     }
  32. //////
  33. public:
  34.  
  35.     static string listAllPersonsByFirstNameLetter(const char & letter)
  36.     {
  37.         ostringstream str;
  38.  
  39.         int start_letter_index = (int)(tolower(letter)) - 97;
  40.         if (start_letter_index >= 0 && start_letter_index <= 25)
  41.         {
  42.             for (int i = 0; i < personsByName[start_letter_index].size(); i++)
  43.             {
  44.                 str << ".............................."
  45.                     << endl << personsByName[start_letter_index][i]->getInfo();
  46.             }
  47.         }
  48.         else
  49.         {
  50.             throw "Invalid symbol instead of a letter";
  51.         }
  52.  
  53.         str << endl;
  54.  
  55.         return str.str();
  56.     }
  57.  
  58.     static string listPersonsSummaryByNameStartingLetter()
  59.     {
  60.         ostringstream str;
  61.  
  62.         for (int i = 0; i < 26; i++)
  63.         {
  64.             str << (char)(i+65) << " : " << personsByName[i].size() << endl;
  65.         }
  66.  
  67.         str << endl;
  68.  
  69.         return str.str();
  70.     }
  71. }
  72.  
  73. ////
  74.  
  75. vector<Person*> CarsRegister::personsByName[26]{};
  76.  
  77. ////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement