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

sortowanie bombelkowe struktury C++

Object Storage Arubacloud
0 głosów
770 wizyt
pytanie zadane 10 maja 2018 w C i C++ przez Sylwek4321 Nowicjusz (160 p.)

Jeżeli posortuje strukturę według wieku to jeśli ją wyświetlę to wiek jest posortowany dobrze natomiast nazwiska i imiona nie chcę się zamienić  np przed sortowaniem Jan Kowalski wiek 23 i Adam Nowak wiek 33 natomiast po sortowaniu jest Jan Kowalski 33 i Adam Nowak 23. Co zmienić w kodzie żeby wszystko się sortowało.

 


#include<iostream>
#include<cstdlib>
#include<time.h>

using namespace std;
int i,n,j;
struct Student
{
    int wiek;
    int oceny;
    int rok;
    int id;
    string imie;
    string nazwisko;
};

nowe_dane(Student *arr)
{
    int liczba=10;
    string imiona[]= {"Jan","Basia","Stasia","Kasia","Piotr","Pawel","Gawel","Lena","Ksenia","Benio"};
    string nazwiska[]= {"Nowak","Bienko","Kowalski","Wozniak","Kaczynski","Adamczyk","Dudek","Budka","Kludka","Big"};
    for(i=0; i<n; i++)
    {
        arr[i].wiek=rand()%5+20;
        arr[i].rok=rand()%5+1;
        arr[i].id=i;
        arr[i].oceny=rand()%((500-200+1)+200) /100.0;
        arr[i].imie=imiona[rand()%liczba];
        arr[i].nazwisko=nazwiska[rand()%liczba];
    }
}
void wyswietl_dane(Student *arr)
{
    for(i=0; i<n; i++)
    {
        cout<<arr[i].id<<". "<<arr[i].imie<<" "<<arr[i].nazwisko<<" wiek:"<<arr[i].wiek<<" rok:"<<arr[i].rok<<" ocena:"<<arr[i].oceny<<endl;
    }
}
void bombelkowe(Student *arr)
{
    int x;
    for (i=1; i<n; i++)
    {
        for(j=n-1; j>=1; j--)
        {
            if(arr[j].wiek<arr[j-1].wiek)
            {

                x=arr[j-1].wiek;
                arr[j-1].wiek=arr[j].wiek;
                arr[j].wiek=x;

            }
        }
    }

}

int main()
{
    srand(time(NULL));
    cout<<"Podaj liczbe studentow:";
    cin>>n;
    Student *arr=new Student[n];

    int wybor;

    do
    {
        cout<<"1.Nowe dane"<<endl;
        cout<<"2.Bombelkowe"<<endl;
        cout<<"3.Wyswietl dane"<<endl;
        cout<<"Odpowiedz:";
        cin>>wybor;

        switch(wybor)
        {
        case 1:
            nowe_dane(arr);
            break;
        case 2:
            bombelkowe(arr);
            break;
        case 3:
            wyswietl_dane(arr);
            break;
        }
    }
    while(wybor!=8);

    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 11 maja 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)
x=arr[j-1].wiek;
arr[j-1].wiek=arr[j].wiek;
arr[j].wiek=x;

W tym sortowaniu bąbelkowym jedyne co zmieniasz w tych strukturach to wiek. Reszta struktury w żaden magiczny sposób nie zmieni. Zamiast tych 3 linijek możesz użyć funkcji std::swap.

Podobne pytania

+1 głos
1 odpowiedź 463 wizyt
pytanie zadane 13 grudnia 2020 w C i C++ przez XYZ!12 Nowicjusz (130 p.)
0 głosów
0 odpowiedzi 379 wizyt
pytanie zadane 1 stycznia 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)
0 głosów
2 odpowiedzi 729 wizyt
pytanie zadane 24 czerwca 2018 w C i C++ przez siemasiema123.96 Początkujący (350 p.)

92,539 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 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!

...