Advertisement
PomozMi

Beatka

Mar 14th, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.97 KB | None | 0 0
  1. // WGL to ma być
  2. /*
  3. Dane wyjściowe:
  4.  
  5. Krzysztof
  6. Antoni
  7. Waclaw
  8. Anna
  9. Helena
  10. Dawid
  11.  
  12. */
  13. // a ja mam więcej wyników
  14.  
  15.  
  16. /*
  17. Drzewo genealogiczne
  18. W pliku wejściowym ‘drzewo_genealogiczne.txt’ zadane są relacje macierzyństwa (m) i ojcostwa (o) pomiędzy członkami pewnej dużej rodziny.
  19. Relacje zapisano w postaci:
  20. (Ewa, m, Maciej)
  21. (Adam, o, Maciej)
  22. Utwórz drzewo genealogiczne (o strukturze niejednorodnej) wiedząc, że nikt z członków rodziny nie ma więcej niż 4 potomków.
  23. Znajdź wszystkie prawnuki protoplastów rodu. Zauważ, że w pierwszym kroku trzeba odkryć protoplastów rodu!
  24. */
  25.  
  26. // zrobiłem to tak, że jak ktoś jest rodzicem ma potomka
  27. // więc na końcu szukam osób które nie mają potomka
  28.  
  29. #include <iostream>
  30. #include <vector>
  31. #include <algorithm>
  32. #include <fstream>
  33. #include <string>
  34.  
  35.  
  36. using namespace std;
  37.  
  38. class Person
  39. {
  40.     string ID;
  41.     bool ISparent;
  42. public:
  43.     string getID(){
  44.         return ID;
  45.     }
  46.     bool getIsParent(){
  47.         return ISparent;
  48.     }
  49.     Person(string ID, bool IS);
  50.     Person(){};
  51.     void set(string ID, bool IS){
  52.         this->ID = ID;
  53.         ISparent = IS;
  54.     }
  55. };
  56.  
  57. int main(){
  58.     vector <Person * > Family;
  59.     string name; // parent
  60.     string relation;
  61.     string rel_name;// children
  62.     char chars[] = "(),";
  63.     fstream tree("drzewo_genealogiczne.txt", ios::in);
  64.     for (int j = 0; tree.good(); j++){
  65.         Person * person1 = new Person();
  66.         Person * person2 = new Person();
  67.  
  68.         tree >> name;
  69.         for (int i = 0; i < strlen(chars); i++)
  70.             name.erase(std::remove(name.begin(), name.end(), chars[i]), name.end());
  71.         tree >> relation;
  72.         for (int i = 0; i < strlen(chars); i++)
  73.             relation.erase(std::remove(relation.begin(), relation.end(), chars[i]), relation.end());
  74.         tree >> rel_name;
  75.         for (int i = 0; i < strlen(chars); i++)
  76.             rel_name.erase(std::remove(rel_name.begin(), rel_name.end(), chars[i]), rel_name.end());
  77.  
  78.         //  cout << name << endl << relation << endl << rel_name << endl;
  79.  
  80.  
  81.         person1->set(name, true); // have children
  82.         Family.push_back(person1);
  83.  
  84.         bool findrelation = false;
  85.  
  86.         for (int f = 0; f < Family.size(); f++)
  87.         {
  88.             if (Family[f]->getID() == rel_name)
  89.                 findrelation = true;
  90.         }
  91.  
  92.         person2->set(rel_name, findrelation);
  93.         Family.push_back(person2);
  94.     }
  95.  
  96.     for (int i = 0; i < Family.size() - 1; i++)
  97.     {
  98.         if (Family[i]->getIsParent() == false)
  99.         {
  100.             cout << Family[i]->getID() << endl;
  101.         }
  102.     }
  103. }
  104. /*
  105.  
  106. "drzewo_genealogiczne.txt"
  107.  
  108. (Maciej, o, Jan)
  109. (Maciej, o, Filip)
  110. (Elzbieta, m, Filip)
  111. (Elzbieta, m, Jan)
  112. (Elzbieta, m, Barbara)
  113. (Maciej, o, Barbara)
  114. (Katarzyna, m, Janina)
  115. (Katarzyna, m, Beata)
  116. (Tomasz, o, Janina)
  117. (Tomasz, o, Beata)
  118. (Ewa, m, Maciej)
  119. (Adam, o, Maciej)
  120. (Filip, o, Krzysztof)
  121. (Daria, m, Krzysztof)
  122. (Filip, o, Antoni)
  123. (Daria, m, Antoni)
  124. (Barbara, m, Waclaw)
  125. (Piotr, o, Waclaw)
  126. (Beata, m, Anna)
  127. (Beata, m Helena)
  128. (Beata, m, Dawid)
  129. (Jerzy, o, Dawid)
  130. (Jerzy, o, Helena)
  131. (Jerzy, o, Anna)
  132. (Waclaw, o, Patrycja)
  133. (Lidia, m, Patrycja)
  134. (Ewa, m, Katarzyna)
  135. (Adam, o, Katarzyna)
  136. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement