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

Sortowanie struktur za pomocą kopcowania

VPS Starter Arubacloud
0 głosów
262 wizyt
pytanie zadane 21 czerwca 2018 w C i C++ przez siemasiema123.96 Początkujący (350 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 (30,150 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 (350 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 (30,150 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 (350 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 (30,150 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ź 264 wizyt
pytanie zadane 15 maja 2016 w C i C++ przez krzych719 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,557 wizyt
pytanie zadane 9 czerwca 2018 w C i C++ przez WhizzKid Początkujący (400 p.)
0 głosów
2 odpowiedzi 892 wizyt
pytanie zadane 7 kwietnia 2016 w C i C++ przez Jędrzej Dembowski Użytkownik (740 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...