• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z sortowaniem danych zawartych w strukturach.

Object Storage Arubacloud
0 głosów
151 wizyt
pytanie zadane 27 czerwca 2018 w C i C++ przez Piotr Lis Obywatel (1,310 p.)

Witam,

Zacząłem pisać program mający wyświetlać wyniki graczy oraz ich nicki od najlepszego do najgorszego, w oparciu o struktury (bez gry - to ćwiczenie z ksiązki Alexa Allaina), ale napotkał mnie problem z algorytmem sortującym. Otóż petla zatrzymuje się w jedym miejscu i powtarza tylko tą jedną linie kodu, czego wynkiem jest czarny ekran w konsoli:

#pragma region Sorting

	int fTheLowestValue(Player player[], int q, int index)//int q = 5
	{
		for (int i = index + 1; i < q; i++)
		{
			if (player[i].score > player[index].score)
			{
				i = index;  //tu zatrzymuje się program
			}
		}
		return index;
	}

	void change(Player player[], int index, int index2)
	{
		int buffer = player[index].score; 
		player[index].score = player[index2].score;
		player[index2].score = buffer;
	}

	void sort(Player player[], int q)//int q = 5
	{
		for (int i = 0; i < q; i++)
		{
			int index = fTheLowestValue(player, q, i);
			change(player, i, index);
		}
	}

#pragma endregion

Nie mam pojęcia co może być problemem, z góry więc dziekuję za odpowiedź!

1 odpowiedź

+1 głos
odpowiedź 27 czerwca 2018 przez RafalS VIP (122,820 p.)
wybrane 27 czerwca 2018 przez Piotr Lis
 
Najlepsza

Bardzo logiczne, że sie zatrzymuje. Jeśli za player[index] znajduje sie co najmniej jeden większy lub równy player to:

-znajdujesz >= playera
-cofasz iteracje spowrotem do index
-znowu znajdujesz tego samego playera
-cofasz iteracje spowrotem do index
-zno....

Naucz się debugować, jeśli nie z pomocą jakiegoś sprytnego narzędzie to rób zwykłe couty np w ten sposób:

        for (int i = index + 1; i < q; i++)
        {
            cout<<"i = "<<i<<endl;
            if (player[i].score > player[index].score)
            {
                cout<<"znalazłem >=, przypisuje "<<index<<" do i"<<endl;
                i = index;  //tu zatrzymuje się program
            }
        }

 

komentarz 27 czerwca 2018 przez Hiskiel Pasjonat (22,830 p.)
Mogę wspomnieć o std::qsort? :P
komentarz 27 czerwca 2018 przez mokrowski Mędrzec (155,460 p.)
Ale qsort jest takie... "niemęskie" :) Lepiej jeść schabowego pałeczkami do sushi. To bardziej hipsterskie :)

żart..

Podobne pytania

0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 18 grudnia 2019 w C i C++ przez maj005 Początkujący (300 p.)
0 głosów
1 odpowiedź 1,038 wizyt
0 głosów
1 odpowiedź 158 wizyt

92,555 zapytań

141,402 odpowiedzi

319,539 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...