irapilguy

Untitled

Nov 29th, 2020
491
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Èñïîëüçóÿ ÎÎÏ è àëãîðèòìû íóæíî ðàçîáðàòü ôàéë PerseTask.txt,
  2. íóæî ïî çàïðîñó âûâîäèòü ïîëíîå èìÿ ÷åëîâåêà è åãî ãîä ðîæåíèÿ.*/
  3. #include <iostream>
  4. #include <fstream>
  5. #include <string>
  6. #include <vector>
  7. #include <sstream>
  8. #include <algorithm>
  9.  
  10. using namespace std;
  11.  
  12. const char separator[] = " \t";
  13. #define SEPARATOR_FOR_DATE "."
  14. struct Date
  15. {
  16.     string day;
  17.     string month;
  18.     string year;
  19. };
  20.  
  21.  
  22. class Parce
  23. {
  24.     vector<string> parseVector;
  25.  
  26. public:
  27.     void ParseStr(string stroka)
  28.     {
  29.         string temp;
  30.         for (int i = 0; i <= stroka.length(); i++) {
  31.  
  32.             if (!any_of(separator, separator + 3, [=](char n) {return n == stroka[i]; })) {
  33.                 temp += stroka[i];
  34.             }
  35.             else {
  36.                 parseVector.push_back(temp);
  37.                 temp = "";
  38.                 continue;
  39.             }
  40.  
  41.         }
  42.  
  43.         Date myDate = ParseDate(parseVector.back());
  44.  
  45.     }
  46.  
  47.     string CreateName()
  48.     {
  49.         string s;
  50.         for (auto i : parseVector)
  51.         {
  52.             s += i;
  53.             s += " ";
  54.         }
  55.     }
  56. };
  57.  
  58.     Date& ParseDate(string date)
  59.     {
  60.         size_t currPos = 0;
  61.         vector<string> datte;
  62.         //0000028....10000.1
  63.         while (currPos != date.size())
  64.         {
  65.             auto it = find(date.begin(), date.end(), SEPARATOR_FOR_DATE);
  66.             int indexOfEnd = it == date.end() ? date.size() : *it;
  67.             string s = date.substr(currPos, indexOfEnd - currPos);
  68.             datte.push_back(s);
  69.             it = find_if_not(date.begin() + indexOfEnd + 1, date.end(), SEPARATOR_FOR_DATE);
  70.             currPos = it == date.end() ? date.size() : *it;
  71.         }
  72.     }
  73. };
  74.  
  75. class Chelovek {
  76.     string name, dayCh, monthCh, yearCh;
  77.  
  78. public:
  79.     Chelovek() {}
  80.  
  81.     Chelovek(string stroka) {
  82.         vector<string> tempChel;
  83.         string temp;
  84.         for (int i = 0; i <= stroka.length(); i++) {
  85.            
  86.            
  87.         }
  88.         for (int i = 0; i < tempChel.size(); i++) {
  89.             if (tempChel[i].empty()) {
  90.                 tempChel.erase(tempChel.begin() + 1);
  91.                 --i;
  92.             }
  93.         }
  94.  
  95.  
  96.         if (tempChel.size() == 6) {
  97.             this->familiya = tempChel[0];
  98.             this->imya = tempChel[1];
  99.             this->otchestvo = tempChel[2];
  100.             this->dayCh = tempChel[3];
  101.             this->monthCh = tempChel[4];
  102.             this->yearCh = tempChel[5];
  103.         }
  104.         else if (tempChel.size() > 6) {
  105.             this->familiya = tempChel[0];
  106.             this->imya = tempChel[1] + " " + tempChel[2];
  107.             this->otchestvo = tempChel[3];
  108.             this->dayCh = tempChel[4];
  109.             this->monthCh = tempChel[5];
  110.             this->yearCh = tempChel[6];
  111.         }
  112.         else if (tempChel.size() < 6) {
  113.             cout << "Write error " << endl;
  114.             for (int i = 0; i < tempChel.size(); i++) {
  115.                 cout << tempChel[i] << " ";
  116.             }
  117.             cout << endl;
  118.         }
  119.     }
  120.     void printData() {
  121.         cout << dayCh << "." << monthCh << "." << yearCh;
  122.     }
  123.     void printChel() {
  124.         cout << familiya << " - " << imya << " - " << otchestvo << " - ";
  125.         printData();
  126.         cout << endl;
  127.     }
  128.     string getFamiliya() {
  129.         return familiya;
  130.     }
  131.     //~Chelovek(){}
  132. };
  133. int main() {
  134.     vector<Chelovek> baza;
  135.     string stroka;
  136.     ifstream in("ParseTask.txt");
  137.     if (in.is_open())
  138.     {
  139.         while (getline(in, stroka))
  140.         {
  141.             Chelovek temp(stroka);
  142.             baza.push_back(temp);
  143.         }
  144.     }
  145.     in.close();
  146.     cout << "Enter surname - ";
  147.     string surname;
  148.     int k = -1;
  149.     cin >> surname;
  150.     for (int i = 0; i < baza.size(); i++) {
  151.         if (baza[i].getFamiliya() == surname) {
  152.             k = i;
  153.         }
  154.     }
  155.     if (k > 0) baza[k].printChel();
  156.     else cout << "Not found" << endl;
  157.     return 0;
  158. }
RAW Paste Data