Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. struct Student{
  5. string imie;
  6. string nazwisko;
  7. int index;
  8. Student *next;
  9. };
  10.  
  11. void print(Student *wskaznik);
  12. void dodaj(Student *wskaznik, Student *nowy);
  13. void usun(Student *wskaznik, int index);
  14. int policz(Student *wskaznik);
  15. void swap(Student *prev);
  16.  
  17. int main(){
  18. Student *one = new Student;
  19. one->index = (-1);
  20. Student *temp = new Student;
  21. cout<<"MENU: \n 1. WYSWIETL LISTE STUDENTOW \n 2. DODAJ NOWEGO STUDENTA \n 3. USUN STUDENTA Z REJESTRU \n 4. POLICZ ILU JEST UCZNIOW W REJESTRZE \n 5. POSORTUJ WEDLUG NAZWISK ALFABETYCZNIE \n 6. POSORTUJ WEDLUG INDEXOW"<<endl;
  22.  
  23. int n;
  24. while(true){
  25. cin>>n;
  26. if(n==1)print(one);
  27. else if(n==2){
  28. cout<<"Podaj imie:"<<endl;
  29. cin>>temp->imie;
  30. cout<<"Podaj nazwisko"<<endl;
  31. cin>>temp->nazwisko;
  32. cout<<"Podaj numer albumu:"<<endl;
  33. cin>>temp->index;
  34. dodaj(one, temp);
  35. }
  36. else if(n==3){
  37. int index;
  38. cout<<"Podaj numer indexu ucznia, ktorego chcesz usunac:"<<endl;
  39. cin>>index;
  40. usun(one, index);
  41. }
  42. else if(n==4){
  43. int x=policz(one);
  44. cout<<"Tylu jest uczniow w rejestrze:"<<x<<endl;
  45. }
  46. else if(n==5){
  47. swap(one);
  48. }
  49. }
  50. }
  51.  
  52. void print(Student *wskaznik){
  53. wskaznik=wskaznik->next;
  54. while(wskaznik!=NULL){
  55. cout<<wskaznik->imie<<" "<<wskaznik->nazwisko<<" "<<wskaznik->index<<endl;
  56. wskaznik=wskaznik->next;
  57. };
  58. }
  59. void dodaj(Student *wskaznik, Student *nowy){
  60. while(wskaznik->next!=NULL){
  61. wskaznik=wskaznik->next;
  62. }
  63. Student *nowszy = new Student;
  64. *nowszy=*nowy;
  65. wskaznik->next=nowszy;
  66. }
  67.  
  68. void usun(Student *wskaznik, int index){
  69. Student *temp = new Student;
  70. while(wskaznik->index!=index){
  71. temp=wskaznik;
  72. wskaznik=wskaznik->next;
  73. }
  74. temp->next=wskaznik->next;
  75. delete temp;
  76. }
  77.  
  78.  
  79. int policz(Student *wskaznik){
  80. int i=0;
  81. while(wskaznik->next!=NULL){
  82. wskaznik=wskaznik->next;
  83. i++;
  84. }
  85. return i;
  86. }
  87.  
  88. void swap(Student *zero){
  89. Student *temp = zero->next; // przypisanie adresu jedynki do wskaznika na tempa (temp)
  90. zero->next = temp->next; //przypisanie adresu dwojki do NEXTA W ZERZE
  91. temp->next = (zero->next)->next; //przypisanie adresu trojki do NEXTA W JEDYNCE
  92. (zero->next)->next = temp; // przypisanie adresu jedynki do NEXTA w dwojce
  93.  
  94. }
  95.  
  96. Student* comp(Student *jed, Student *dwa){
  97. if((jed->nazwisko==dwa->nazwisko) && (jed->imie==dwa->imie)){
  98. if(jed->index>dwa->index) return dwa;
  99. else return jed;
  100. }
  101. else if(jed->nazwisko==dwa->nazwisko){
  102. int shorter = jed->imie.length();
  103. if (dwa->imie.length() < shorter) shorter = dwa->imie.length();
  104. for (int i = 0; i < shorter; i++){
  105. if ( jed->imie[i] != dwa->imie[i] ){
  106. if (jed->imie[i] > dwa->imie[i]) return dwa;
  107. else return jed;
  108. }
  109. }
  110. if (jed->imie.length() == shorter) return jed;
  111. else return dwa;
  112. }
  113. else {
  114. int shorter = jed->nazwisko.length();
  115. if (dwa->nazwisko.length() < shorter) shorter = dwa->nazwisko.length();
  116. for (int i = 0; i < shorter; i++){
  117. if ( jed->nazwisko[i] != dwa->nazwisko[i] ){
  118. if (jed->nazwisko[i] > dwa->nazwisko[i]) return dwa;
  119. else return jed;
  120. }
  121. }
  122. if (jed->nazwisko.length() == shorter) return jed;
  123. else return dwa;
  124.  
  125. }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement