Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class Uczen
- {
- public:
- string kod;
- float s;
- int odleglosc;
- int miesiac;
- int startowaPozycja;
- };
- bool porownanie_sdm(Uczen *pierwszy, Uczen *drugi)
- {
- if (pierwszy->s < drugi->s)
- {
- return true;
- }
- else if (pierwszy->s > drugi->s)
- {
- return false;
- }
- else
- {
- if (pierwszy->odleglosc < drugi->odleglosc)
- {
- return true;
- }
- else if (pierwszy->odleglosc > drugi->odleglosc)
- {
- return false;
- }
- else
- {
- if (pierwszy->miesiac < drugi->miesiac)
- {
- return true;
- }
- else if (pierwszy->miesiac > drugi->miesiac)
- {
- return false;
- }
- else
- {
- if (pierwszy->startowaPozycja > drugi->startowaPozycja)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- }
- }
- bool porownanie_smd(Uczen *pierwszy, Uczen *drugi)
- {
- if (pierwszy->s < drugi->s)
- {
- return true;
- }
- else if (pierwszy->s > drugi->s)
- {
- return false;
- }
- else
- {
- if (pierwszy->miesiac < drugi->miesiac)
- {
- return true;
- }
- else if (pierwszy->miesiac > drugi->miesiac)
- {
- return false;
- }
- else
- {
- if (pierwszy->odleglosc < drugi->odleglosc)
- {
- return true;
- }
- else if (pierwszy->odleglosc > drugi->odleglosc)
- {
- return false;
- }
- else
- {
- if (pierwszy->startowaPozycja > drugi->startowaPozycja)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- }
- }
- bool porownanie_mds(Uczen *pierwszy, Uczen *drugi)
- {
- if (pierwszy->miesiac < drugi->miesiac)
- {
- return true;
- }
- else if (pierwszy->miesiac > drugi->miesiac)
- {
- return false;
- }
- else
- {
- if (pierwszy->odleglosc < drugi->odleglosc)
- {
- return true;
- }
- else if (pierwszy->odleglosc > drugi->odleglosc)
- {
- return false;
- }
- else
- {
- if (pierwszy->s < drugi->s)
- {
- return true;
- }
- else if (pierwszy->s > drugi->s)
- {
- return false;
- }
- else
- {
- if (pierwszy->startowaPozycja > drugi->startowaPozycja)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- }
- }
- bool porownanie_msd(Uczen *pierwszy, Uczen *drugi)
- {
- if (pierwszy->miesiac < drugi->miesiac)
- {
- return true;
- }
- else if (pierwszy->miesiac > drugi->miesiac)
- {
- return false;
- }
- else
- {
- if (pierwszy->s < drugi->s)
- {
- return true;
- }
- else if (pierwszy->s > drugi->s)
- {
- return false;
- }
- else
- {
- if (pierwszy->odleglosc < drugi->odleglosc)
- {
- return true;
- }
- else if (pierwszy->odleglosc > drugi->odleglosc)
- {
- return false;
- }
- else
- {
- if (pierwszy->startowaPozycja > drugi->startowaPozycja)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- }
- }
- bool porownanie_dms(Uczen *pierwszy, Uczen *drugi)
- {
- if (pierwszy->odleglosc < drugi->odleglosc)
- {
- return true;
- }
- else if (pierwszy->odleglosc > drugi->odleglosc)
- {
- return false;
- }
- else
- {
- if (pierwszy->miesiac < drugi->miesiac)
- {
- return true;
- }
- else if (pierwszy->miesiac > drugi->miesiac)
- {
- return false;
- }
- else
- {
- if (pierwszy->s < drugi->s)
- {
- return true;
- }
- else if (pierwszy->s > drugi->s)
- {
- return false;
- }
- else
- {
- if (pierwszy->startowaPozycja > drugi->startowaPozycja)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- }
- }
- bool porownanie_dsm(Uczen *pierwszy, Uczen *drugi)
- {
- if (pierwszy->odleglosc < drugi->odleglosc)
- {
- return true;
- }
- else if (pierwszy->odleglosc > drugi->odleglosc)
- {
- return false;
- }
- else
- {
- if (pierwszy->s < drugi->s)
- {
- return true;
- }
- else if (pierwszy->s > drugi->s)
- {
- return false;
- }
- else
- {
- if (pierwszy->miesiac < drugi->miesiac)
- {
- return true;
- }
- else if (pierwszy->miesiac > drugi->miesiac)
- {
- return false;
- }
- else
- {
- if (pierwszy->startowaPozycja > drugi->startowaPozycja)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- }
- }
- int main()
- {
- ios::sync_with_stdio(false);
- int n;
- cin >> n;
- char priorytety[6];
- cin >>priorytety[0];
- cin >> priorytety[2];
- cin >> priorytety[4];
- priorytety[1] = ' ';
- priorytety[3] = ' ';
- priorytety[5] = '\0';
- string opcja(priorytety);
- Uczen **chlopcy=new Uczen*[n];
- Uczen **dziewczynki = new Uczen*[n];
- bool(*wskaznik) (Uczen*, Uczen*);
- if (opcja == "s d m")
- {
- wskaznik = porownanie_sdm;
- }
- else if (opcja == "s m d")
- {
- wskaznik = porownanie_smd;
- }
- else if (opcja == "m d s")
- {
- wskaznik = porownanie_mds;
- }
- else if (opcja == "m s d")
- {
- wskaznik = porownanie_msd;
- }
- else if (opcja == "d m s")
- {
- wskaznik = porownanie_dms;
- }
- else if(opcja =="d s m")
- {
- wskaznik = porownanie_dsm;
- }
- for (int i = 0; i < n; i++)
- {
- dziewczynki[i] = new Uczen();
- cin >> dziewczynki[i]->kod;
- cin >> dziewczynki[i]->s;
- cin >> dziewczynki[i]->odleglosc;
- cin >> dziewczynki[i]->miesiac;
- dziewczynki[i]->startowaPozycja = i;
- chlopcy[i] = new Uczen();
- cin >> chlopcy[i]->kod;
- cin >> chlopcy[i]->s;
- cin >> chlopcy[i]->odleglosc;
- cin >> chlopcy[i]->miesiac;
- chlopcy[i]->startowaPozycja = i;
- if (i >= 1)
- {
- if (wskaznik(chlopcy[i], chlopcy[i - 1]) == true)
- {
- Uczen *temp;
- temp = chlopcy[i];
- for (int j = i - 1; (j >= 0) && (wskaznik(temp, chlopcy[j]) == true); j--)
- {
- chlopcy[j + 1] = chlopcy[j];
- chlopcy[j] = temp;
- }
- }
- if (wskaznik(dziewczynki[i], dziewczynki[i - 1]) == true)
- {
- Uczen *temp2;
- temp2 = dziewczynki[i];
- for (int j = i - 1; (j >= 0) && (wskaznik(temp2, dziewczynki[j]) == true); j--)
- {
- dziewczynki[j + 1] = dziewczynki[j];
- dziewczynki[j] = temp2;
- }
- }
- }
- }
- for (int i = n-1; i >= 0; i--)
- {
- cout << dziewczynki[i]->kod << ' ' << chlopcy[i]->kod << ' ';
- }
- delete dziewczynki;
- delete chlopcy;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement