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

Sortowanie struktur za pomocą kopcowania

0 głosów
78 wizyt
pytanie zadane 21 czerwca 2018 w C i C++ przez siemasiema123.96 Początkujący (280 p.)

Czy mógłby mnie ktoś nakierować jak za pomocą kopcowania mogę posortować strukturę po wieku? (od najmłodszej do najstarszej osoby), Z sortowaniem bąbelkowym nie miałem problemu, ale za kopcowanie nie wiem w ogóle jak się zabrać. A tu kod bąbelkowego

    int i,j;
    int tmp;
    for(j = 0; j < licznik_struktur - 1; j++)
    {
        for(i = 0; i < licznik_struktur - 1; i++)
        {
            if(X[i].rok > X[i+1].rok)
            {
                tmp = X[i+1].rok;
                X[i + 1].rok = X[i].rok;
                X[i].rok = tmp;
            }
        }
    }

 

komentarz 21 czerwca 2018 przez k222 Nałogowiec (26,730 p.)
Tak dodając swoje trzy grosze, czy twoja struktura zawiera tylko rok?

Bo jak tak to bez sensu, a jak nie to przy swoich szorowaniach zamieniasz miejscami tylko zmienne rok, nie zważając na całą resztę, przez co całkiem zmieniają ci się dane.
komentarz 21 czerwca 2018 przez siemasiema123.96 Początkujący (280 p.)

Mam jeszcze imię i nazwisko w dwóch osobnych polach. 

struct daneks {
    char imie[MAX_IMIE];
    char nazwisko[MAX_NAZW];
    int rok;
};

 

komentarz 21 czerwca 2018 przez k222 Nałogowiec (26,730 p.)
Więc przed sortowaniem masz

Jan Kowalski 1999
Maria Nowak 2004

a po sortowaniu

Jan Kowalski 2004
Maria Nowak 1999

 

więc to trzeba zmienić, bo na wyjściu masz inne dane

najlepiej chyba zrobić osobną funkcję tupu swap(x,y) która to będzie zamieniać, żeby funkcji nie rozciągać niepotrzebnie
komentarz 22 czerwca 2018 przez siemasiema123.96 Początkujący (280 p.)
        daneks tmp = X[0].imie;
        X[0].imie= X[i].imie;
        X[i].imie = tmp;

czemu tmp nie mogę tak zrobić ani za pomocą tablicy char? :p

komentarz 22 czerwca 2018 przez k222 Nałogowiec (26,730 p.)
masz tam tablice charów, czyli łańcuchy znakowe, do ich kopiowania jest specjalna funkcja strcpy(,) (albo kopiowanie komórka po komórce)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 97 wizyt
pytanie zadane 15 maja 2016 w C i C++ przez krzych719 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 9 czerwca 2018 w C i C++ przez WhizzKid Początkujący (400 p.)
0 głosów
2 odpowiedzi 363 wizyt
pytanie zadane 7 kwietnia 2016 w C i C++ przez Jędrzej Dembowski Użytkownik (740 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

66,451 zapytań

113,207 odpowiedzi

239,680 komentarzy

46,704 pasjonatów

Przeglądających: 270
Pasjonatów: 12 Gości: 258

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.

...