[C++] Sortowanie rankingu


(Rxprojekt) #1

Witam wszystkich.

Mam sprawę, a mianowicie mam napisać program, który sortuje ranking. A mianowicie mam trzy tablice, w której w jednej jest imię, w drugiej nazwisko, a w trzeciej jego wynik. Te tablice to imię, nazwisko i wynik. One tworzą ranking, numer pozycji tablicy oznacza numer w liście. Z tej listy trzeba stworzyć ranking.

Na przykład:

Kamil Paź - 1000

Marcin Fałsz - 10

Asia Prawda - 13

Ma posortować i wywalić tak:

Kamil Paź 1000

Asia Prawda 13

Marcin Fałsz 10


(kostek135) #2

Yhm, to może napisz jeszcze co zrobiłeś i co ci nie działa.


(Copycona) #3

Bierzesz implementacje dowolnego algorytmu sortowania i go modyfikujesz w następujący sposób:

  • porównanie ma się odbywać dla tablicy z wynikami

  • zmiana wartości w przypadku, gdy porównanie zwróci prawdę ma nastąpić dla wszystkich trzech tablic

czyli:

jeżeli wynik[a+1] > wynik[a]

{

    zamień wynik[a+1] i wynik[a]

    zamień imię[a+1] i imię[a]

    zamień nazwisko[a+1] i nazwisko[a]

}

(Kubakuderski) #4

Tak na szybko:

#include 

#include 

#include 

using namespace std;


class Result

{

	public:

		string name;

		bool whatever;

		int score;


		Result(){}


		Result(string n, bool w, int s)

		{

			name = n, whatever = w, score = s;

		}

};


bool operator< (Result a, Result b)

{

	return !(a.score != b.score ? a.score < b.score : a.name < b.name); // negacja tak na szybko, bo ma byc malejaco...

}


ostream& operator<< (ostream &os, const Result &a)

{

   os << a.name << " " << (a.whatever == true ? "true" : "false") << " " << a.score;

   return os;

}


int main()

{

	string names[]={"Zenon", "Aaron", "Eustachy", "Jajeczko", "Mleko"};

	bool whatever[]={true, false, true, false, false};

	int score[]={1, 10, 45, 21, 21};  


	Result tab[5];

	for(int i=0; i<5; i++) tab[i] = Result(names[i], whatever[i], score[i]);


	sort(tab, tab+5);


	for(int i=0; i<5; i++) cout << tab[i] << "\n";


	cin.sync();

	cin.get();

	return 0;

}