Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. class Uczen
  6. {
  7. public:
  8.     string kod;
  9.     float s;
  10.     int odleglosc;
  11.     int miesiac;
  12.     int startowaPozycja;
  13. };
  14.  
  15. bool porownanie_sdm(Uczen *pierwszy, Uczen *drugi)
  16. {
  17.     if (pierwszy->s < drugi->s)
  18.     {
  19.         return true;
  20.     }
  21.     else if (pierwszy->s > drugi->s)
  22.     {
  23.         return false;
  24.     }
  25.     else
  26.     {
  27.         if (pierwszy->odleglosc < drugi->odleglosc)
  28.         {
  29.             return true;
  30.         }
  31.         else if (pierwszy->odleglosc > drugi->odleglosc)
  32.         {
  33.             return false;
  34.         }
  35.         else
  36.         {
  37.             if (pierwszy->miesiac < drugi->miesiac)
  38.             {
  39.                 return true;
  40.             }
  41.             else if (pierwszy->miesiac > drugi->miesiac)
  42.             {
  43.                 return false;
  44.             }
  45.             else
  46.             {
  47.                 if (pierwszy->startowaPozycja > drugi->startowaPozycja)
  48.                 {
  49.                     return true;
  50.                 }
  51.                 else
  52.                 {
  53.                     return false;
  54.                 }
  55.             }
  56.         }
  57.     }
  58. }
  59.  
  60. bool porownanie_smd(Uczen *pierwszy, Uczen *drugi)
  61. {
  62.     if (pierwszy->s < drugi->s)
  63.     {
  64.         return true;
  65.     }
  66.     else if (pierwszy->s > drugi->s)
  67.     {
  68.         return false;
  69.     }
  70.     else
  71.     {
  72.         if (pierwszy->miesiac < drugi->miesiac)
  73.         {
  74.             return true;
  75.         }
  76.         else if (pierwszy->miesiac > drugi->miesiac)
  77.         {
  78.             return false;
  79.         }
  80.         else
  81.         {
  82.             if (pierwszy->odleglosc < drugi->odleglosc)
  83.             {
  84.                 return true;
  85.             }
  86.             else if (pierwszy->odleglosc > drugi->odleglosc)
  87.             {
  88.                 return false;
  89.             }
  90.             else
  91.             {
  92.                 if (pierwszy->startowaPozycja > drugi->startowaPozycja)
  93.                 {
  94.                     return true;
  95.                 }
  96.                 else
  97.                 {
  98.                     return false;
  99.                 }
  100.             }
  101.         }
  102.     }
  103. }
  104.  
  105. bool porownanie_mds(Uczen *pierwszy, Uczen *drugi)
  106. {
  107.     if (pierwszy->miesiac < drugi->miesiac)
  108.     {
  109.         return true;
  110.     }
  111.     else if (pierwszy->miesiac > drugi->miesiac)
  112.     {
  113.         return false;
  114.     }
  115.     else
  116.     {
  117.         if (pierwszy->odleglosc < drugi->odleglosc)
  118.         {
  119.             return true;
  120.         }
  121.         else if (pierwszy->odleglosc > drugi->odleglosc)
  122.         {
  123.             return false;
  124.         }
  125.         else
  126.         {
  127.             if (pierwszy->s < drugi->s)
  128.             {
  129.                 return true;
  130.             }
  131.             else if (pierwszy->s > drugi->s)
  132.             {
  133.                 return false;
  134.             }
  135.             else
  136.             {
  137.                 if (pierwszy->startowaPozycja > drugi->startowaPozycja)
  138.                 {
  139.                     return true;
  140.                 }
  141.                 else
  142.                 {
  143.                     return false;
  144.                 }
  145.             }
  146.         }
  147.     }
  148. }
  149.  
  150. bool porownanie_msd(Uczen *pierwszy, Uczen *drugi)
  151. {
  152.     if (pierwszy->miesiac < drugi->miesiac)
  153.     {
  154.         return true;
  155.     }
  156.     else if (pierwszy->miesiac > drugi->miesiac)
  157.     {
  158.         return false;
  159.     }
  160.     else
  161.     {
  162.         if (pierwszy->s < drugi->s)
  163.         {
  164.             return true;
  165.         }
  166.         else if (pierwszy->s > drugi->s)
  167.         {
  168.             return false;
  169.         }
  170.         else
  171.         {
  172.             if (pierwszy->odleglosc < drugi->odleglosc)
  173.             {
  174.                 return true;
  175.             }
  176.             else if (pierwszy->odleglosc > drugi->odleglosc)
  177.             {
  178.                 return false;
  179.             }
  180.             else
  181.             {
  182.                 if (pierwszy->startowaPozycja > drugi->startowaPozycja)
  183.                 {
  184.                     return true;
  185.                 }
  186.                 else
  187.                 {
  188.                     return false;
  189.                 }
  190.             }
  191.         }
  192.     }
  193. }
  194.  
  195. bool porownanie_dms(Uczen *pierwszy, Uczen *drugi)
  196. {
  197.     if (pierwszy->odleglosc < drugi->odleglosc)
  198.     {
  199.         return true;
  200.     }
  201.     else if (pierwszy->odleglosc > drugi->odleglosc)
  202.     {
  203.         return false;
  204.     }
  205.     else
  206.     {
  207.         if (pierwszy->miesiac < drugi->miesiac)
  208.         {
  209.             return true;
  210.         }
  211.         else if (pierwszy->miesiac > drugi->miesiac)
  212.         {
  213.             return false;
  214.         }
  215.         else
  216.         {
  217.             if (pierwszy->s < drugi->s)
  218.             {
  219.                 return true;
  220.             }
  221.             else if (pierwszy->s > drugi->s)
  222.             {
  223.                 return false;
  224.             }
  225.             else
  226.             {
  227.                 if (pierwszy->startowaPozycja > drugi->startowaPozycja)
  228.                 {
  229.                     return true;
  230.                 }
  231.                 else
  232.                 {
  233.                     return false;
  234.                 }
  235.             }
  236.         }
  237.     }
  238. }
  239.  
  240. bool porownanie_dsm(Uczen *pierwszy, Uczen *drugi)
  241. {
  242.     if (pierwszy->odleglosc < drugi->odleglosc)
  243.     {
  244.         return true;
  245.     }
  246.     else if (pierwszy->odleglosc > drugi->odleglosc)
  247.     {
  248.         return false;
  249.     }
  250.     else
  251.     {
  252.         if (pierwszy->s < drugi->s)
  253.         {
  254.             return true;
  255.         }
  256.         else if (pierwszy->s > drugi->s)
  257.         {
  258.             return false;
  259.         }
  260.         else
  261.         {
  262.             if (pierwszy->miesiac < drugi->miesiac)
  263.             {
  264.                 return true;
  265.             }
  266.             else if (pierwszy->miesiac > drugi->miesiac)
  267.             {
  268.                 return false;
  269.             }
  270.             else
  271.             {
  272.                 if (pierwszy->startowaPozycja > drugi->startowaPozycja)
  273.                 {
  274.                     return true;
  275.                 }
  276.                 else
  277.                 {
  278.                     return false;
  279.                 }
  280.             }
  281.         }
  282.     }
  283. }
  284. int main()
  285. {
  286.     ios::sync_with_stdio(false);
  287.     int n;
  288.     cin >> n;
  289.  
  290.     char priorytety[6];
  291.     cin >>priorytety[0];
  292.     cin >> priorytety[2];
  293.     cin >> priorytety[4];
  294.     priorytety[1] = ' ';
  295.     priorytety[3] = ' ';
  296.     priorytety[5] = '\0';
  297.     string opcja(priorytety);
  298.  
  299.     Uczen **chlopcy=new Uczen*[n];
  300.     Uczen **dziewczynki = new Uczen*[n];
  301.  
  302.     bool(*wskaznik) (Uczen*, Uczen*);
  303.    
  304.     if (opcja == "s d m")
  305.     {
  306.         wskaznik = porownanie_sdm;
  307.     }
  308.     else if (opcja == "s m d")
  309.     {
  310.         wskaznik = porownanie_smd;
  311.     }
  312.     else if (opcja == "m d s")
  313.     {
  314.         wskaznik = porownanie_mds;
  315.     }
  316.     else if (opcja == "m s d")
  317.     {
  318.         wskaznik = porownanie_msd;
  319.     }
  320.     else if (opcja == "d m s")
  321.     {
  322.         wskaznik = porownanie_dms;
  323.     }
  324.     else if(opcja =="d s m")
  325.     {
  326.         wskaznik = porownanie_dsm;
  327.     }
  328.  
  329.     for (int i = 0; i < n; i++)
  330.     {
  331.         dziewczynki[i] = new Uczen();
  332.         cin >> dziewczynki[i]->kod;
  333.         cin >> dziewczynki[i]->s;
  334.         cin >> dziewczynki[i]->odleglosc;
  335.         cin >> dziewczynki[i]->miesiac;
  336.         dziewczynki[i]->startowaPozycja = i;
  337.  
  338.         chlopcy[i] = new Uczen();
  339.         cin >> chlopcy[i]->kod;
  340.         cin >> chlopcy[i]->s;
  341.         cin >> chlopcy[i]->odleglosc;
  342.         cin >> chlopcy[i]->miesiac;
  343.         chlopcy[i]->startowaPozycja = i;
  344.  
  345.         if (i >= 1)
  346.         {
  347.             if (wskaznik(chlopcy[i], chlopcy[i - 1]) == true)
  348.             {
  349.                 Uczen *temp;
  350.                 temp = chlopcy[i];
  351.                 for (int j = i - 1; (j >= 0) && (wskaznik(temp, chlopcy[j]) == true); j--)
  352.                 {
  353.                     chlopcy[j + 1] = chlopcy[j];
  354.                     chlopcy[j] = temp;
  355.                 }
  356.             }
  357.  
  358.             if (wskaznik(dziewczynki[i], dziewczynki[i - 1]) == true)
  359.             {
  360.                 Uczen *temp2;
  361.                 temp2 = dziewczynki[i];
  362.                 for (int j = i - 1; (j >= 0) && (wskaznik(temp2, dziewczynki[j]) == true); j--)
  363.                 {
  364.                     dziewczynki[j + 1] = dziewczynki[j];
  365.                     dziewczynki[j] = temp2;
  366.                 }
  367.             }
  368.         }
  369.     }
  370.     for (int i = n-1; i >= 0; i--)
  371.     {
  372.         cout << dziewczynki[i]->kod << ' ' << chlopcy[i]->kod << ' ';
  373.     }
  374.     delete dziewczynki;
  375.     delete chlopcy;
  376.     return 0;
  377. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement