• 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.

0 głosów
73 wizyt
pytanie zadane 27 czerwca 2018 w C i C++ przez Piotr Lis Obywatel (1,330 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,850 p.)
Mogę wspomnieć o std::qsort? :P
komentarz 27 czerwca 2018 przez mokrowski VIP (146,440 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ź 69 wizyt
pytanie zadane 18 grudnia 2019 w C i C++ przez maj005 Początkujący (300 p.)
0 głosów
1 odpowiedź 718 wizyt
0 głosów
1 odpowiedź 123 wizyt

85,805 zapytań

134,588 odpowiedzi

298,787 komentarzy

56,698 pasjonatów

Advent of Code 2021

Top 15 użytkowników

  1. 494p. - rucin93
  2. 463p. - nidomika
  3. 431p. - CC PL
  4. 385p. - Whistleroosh
  5. 379p. - ScriptyChris
  6. 372p. - adrian17
  7. 340p. - TheLukaszNs
  8. 339p. - WhiskeyTaster
  9. 321p. - Argeento
  10. 318p. - Dagohar
  11. 287p. - Anonim 1794483
  12. 281p. - Klaudia
  13. 278p. - B4mbus
  14. 269p. - b0mbix
  15. 246p. - tokox
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...