Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <queue>
  4. #include <conio.h>
  5. struct SOsoba
  6. {
  7.     std::string imie;
  8.     std::string nazwisko;
  9.     int kolejnosc;
  10.     std::string inneDane;
  11. };
  12.  
  13. struct PorownajOsoby
  14. {
  15.     bool operator ()( const SOsoba & osoba1, const SOsoba & osoba2 )
  16.     {
  17.         //kolejność - rosnąco
  18.         if( osoba1.kolejnosc > osoba2.kolejnosc ) return true;
  19.        
  20.         if( osoba1.kolejnosc < osoba2.kolejnosc ) return false;
  21.        
  22.         //nazwisko - rosnąco
  23.         if( osoba1.nazwisko > osoba2.nazwisko ) return true;
  24.        
  25.         if( osoba1.nazwisko < osoba2.nazwisko ) return false;
  26.        
  27.         //imię - malejąco
  28.         if( osoba1.nazwisko < osoba2.nazwisko ) return true;
  29.        
  30.         if( osoba1.nazwisko > osoba2.nazwisko ) return false;
  31.        
  32.         return false;
  33.     }
  34. };
  35.  
  36. typedef std::priority_queue < SOsoba, std::vector < SOsoba >, PorownajOsoby > TKolejkaPriorytetowaOsob;
  37.  
  38. void WstawOsobe( TKolejkaPriorytetowaOsob & kp, const char * imie, const char * nazwisko, int kolejnosc, const char * inneDane )
  39. {
  40.     SOsoba nowaOsoba;
  41.     nowaOsoba.imie = imie;
  42.     nowaOsoba.nazwisko = nazwisko;
  43.     nowaOsoba.kolejnosc = kolejnosc;
  44.     nowaOsoba.inneDane = inneDane;
  45.     kp.push( nowaOsoba );
  46. }
  47.  
  48. int main()
  49. {
  50.     TKolejkaPriorytetowaOsob kolejkaPriorytetowa;
  51.     WstawOsobe( kolejkaPriorytetowa, "Imie", "Nazwisko", 1, "Pierwszy" );
  52.     WstawOsobe( kolejkaPriorytetowa, "Imie", "Nazwisko", 1, "Drugi" );
  53.     WstawOsobe( kolejkaPriorytetowa, "Imie", "Nazwisko", 1, "Trzeci" );
  54.     WstawOsobe( kolejkaPriorytetowa, "Imie", "Ziomek", 1, "Czwarty" );
  55.    
  56.     while( kolejkaPriorytetowa.size() > 0 )
  57.     {
  58.         SOsoba odczytana = kolejkaPriorytetowa.top();
  59.         kolejkaPriorytetowa.pop();
  60.         std::cout << odczytana.imie << "; " << odczytana.nazwisko << "; " << odczytana.kolejnosc << "; " << odczytana.inneDane << "; " << std::endl;
  61.     }
  62.    
  63.     getch();
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement