Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. struct Prepod {
  9. const char* name;
  10. const char* surname;
  11. const char* pupil;
  12. const char* subject;
  13.  
  14. Prepod(const char* n, const char* surn, const char* pup, const char* subj)
  15. {
  16. name = n;
  17. surname = surn;
  18. pupil = pup;
  19. subject = subj;
  20. }
  21. };
  22.  
  23. struct Link {
  24. Link* prev;
  25. Link* next;
  26. Prepod* teacher;
  27.  
  28. Link(Prepod* prep, Link* pr = nullptr, Link* next = nullptr)
  29. {
  30. this->prev = pr;
  31. this->next = next;
  32. this->teacher = prep;
  33. }
  34. };
  35.  
  36. vector<const char*> sorting(vector<const char*> names);
  37.  
  38. void findPupil(Link* curr, const char* pupil)
  39. {
  40. while (curr->prev != NULL)
  41. {
  42. curr = curr->prev;
  43. }
  44.  
  45. vector<const char*> name;
  46.  
  47. while (curr != NULL)
  48. {
  49. if (curr->teacher->pupil == pupil)
  50. {
  51. name.push_back(curr->teacher->surname);
  52. }
  53. curr = curr->next;
  54. }
  55.  
  56. sorting(name);
  57.  
  58. for (auto i : name)
  59. cout << i << "\t";
  60. cout << endl;
  61. }
  62.  
  63. vector<const char*> sorting(vector<const char*> names)
  64. {
  65. const char* temp;
  66. for (int i = 0; i < names.size()-1; i++)
  67. {
  68. if (names[i] > names[i + 1])
  69. {
  70. temp = names[i + 1];
  71. names[i + 1] = names[i];
  72. names[i] = temp;
  73. }
  74. }
  75.  
  76. return names;
  77. }
  78.  
  79. void findSubj(Link* curr, const char* name, const char* surname)
  80. {
  81. while (curr->prev != NULL)
  82. {
  83. curr = curr->prev;
  84. }
  85.  
  86. while (curr != NULL)
  87. {
  88. if (curr->teacher->name == name && curr->teacher->surname == surname)
  89. {
  90. cout << curr->teacher->subject << endl;
  91. }
  92. curr = curr->next;
  93. }
  94. }
  95.  
  96. Link* add(Link* current, Link* follow)
  97. {
  98. current->next = follow;
  99. follow->prev = current;
  100. follow->next = nullptr;
  101.  
  102. return follow;
  103. }
  104.  
  105. void print(Link* curr)
  106. {
  107. cout << "Name: " << curr->teacher->name << endl;
  108. cout << "Surname: " << curr->teacher->surname << endl;
  109. cout << "Pupil: " << curr->teacher->pupil << endl;
  110. cout << "Subject: " << curr->teacher->subject << endl;
  111. }
  112.  
  113. int main()
  114. {
  115. Link* teachers = new Link(new Prepod("Alexey", "Zykov", "Physics", "Labs"), nullptr);
  116. teachers = add(teachers, new Link(new Prepod("Irina", "Ryzkova", "Math", "linear algebra")));
  117. teachers = add(teachers, new Link(new Prepod("Irina", "Ryzkova", "Math", "mathematical analysis")));
  118. teachers = add(teachers, new Link(new Prepod("Natalia", "Garinova", "Physics", "Electricity")));
  119. teachers = add(teachers, new Link(new Prepod("Igor", "Spiridonov", "Physics", "Labs")));
  120.  
  121. //findSubj(teachers, "Irina", "Ryzkova");
  122. findPupil(teachers, "Physics");
  123. return 0;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement