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

Posortowanie struktur

0 głosów
209 wizyt
pytanie zadane 13 stycznia 2019 w C i C++ przez Michał_Warmuz Mądrala (5,830 p.)

Cześć Mam za zadnie posortować daty struktur. Kurcze kiedy wywoluje funkcje sortujaca wywala mi blad:

error: invalid conversion from 'int' to 'int*' [-fpermissive]|

 

O to kod:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void sortowanie_babelkowe(int *tab, int n)
{
 for (int i=1; i<n; i++)
 {
 for (int j=n-1; j>=1; j--)
 {
 if (tab[j]<tab[j-1])
 {
 int bufor;
bufor=tab[j-1];
tab[j-1]=tab[j];
tab[j]=bufor;
 }
 }
 }
}







struct Date {
        int day;
        int mounth;
        int year;
        int suma;
};


int main()
{
    int n;
    srand( time( NULL ) );
    cout << "Podaj n: " << endl;
    cin>>n;

    Date *daty = new Date[n];


    for(int i=0; i<n; i++) {

        daty[i].suma = 0;
        daty[i].day = (rand()%30)+1;
        daty[i].mounth = (rand()%12)+1;
        daty[i].year = (rand()%2500)+1;
        daty[i].suma += daty[i].day + daty[i].mounth + daty[i].year;
    }

    for(int i=0; i<n; i++) {

        cout <<daty[i].day <<" ";
        cout <<daty[i].mounth<< " ";
        cout <<daty[i].year << endl;
        cout << daty[i].suma<<endl;
    }
    sortowanie_babelkowe((*daty)->suma,n);
    delete [] daty;
    return 0;
}

Z góry bardzo dziekuje za pomoc :)

2 odpowiedzi

0 głosów
odpowiedź 13 stycznia 2019 przez Wunsz Użytkownik (680 p.)
Zapewne błąd jest w funkcji sortowanie bąbelkowym ,w którym jak mniemam ma pozmieniać kolejność obiektów w tablicy jako argument przyjmujesz tablice int , a wywołujesz tą funkcje dając jej nie pointer tylko zwykłego inta. Tablica data to pointer wskazujący pierwszy na obiekt typu Date.  (*daty)->suma - to wartość suma pierwszego elementu tablicy daty. Po za tym to dziwnie to robisz. Ja bym zrobił tak ,że sortowanie bąbelkowe przyjmuje jako parametr tablice daty , zrobiłbym funkcje  getKey(Date * p) który zwraca klucz według którego masz sortować i potem zmieniałbym kolejność w tablicy daty.
komentarz 13 stycznia 2019 przez Michał_Warmuz Mądrala (5,830 p.)
mniej wiecej rozumiem a co do sortowania babelkowego to mam dac daty[n].suma ?
komentarz 13 stycznia 2019 przez Wunsz Użytkownik (680 p.)
ale gdzie to chcesz dać
0 głosów
odpowiedź 14 stycznia 2019 przez niezalogowany

coś takiego działa

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

struct Date
{
    int day;
    int mounth;
    int year;
    int suma;
};


void sortowanie_babelkowe(Date *tab, int n)
{
    for (int i=1; i<n; i++)
    {
        for (int j=n-1; j>=1; j--)
        {
            if (tab[j].suma<tab[j-1].suma)
            {
                Date bufor;
                bufor=tab[j-1];
                tab[j-1]=tab[j];
                tab[j]=bufor;
            }
        }
    }
}



int main()
{
    int n;
    srand( time( NULL ) );
    cout << "Podaj n: " << endl;
    cin>>n;

    Date *daty = new Date[n];


    for(int i=0; i<n; i++)
    {

        daty[i].suma = 0;
        daty[i].day = (rand()%30)+1;
        daty[i].mounth = (rand()%12)+1;
        daty[i].year = (rand()%2500)+1;
        daty[i].suma += daty[i].day + daty[i].mounth + daty[i].year;
    }

    for(int i=0; i<n; i++)
    {
        cout <<daty[i].day <<" ";
        cout <<daty[i].mounth<< " ";
        cout <<daty[i].year << endl;
        cout << daty[i].suma<<endl;
    }
 
    sortowanie_babelkowe(daty,n);

        for(int i=0; i<n; i++)
    {
        cout <<daty[i].day <<" ";
        cout <<daty[i].mounth<< " ";
        cout <<daty[i].year << endl;
        cout << daty[i].suma<<endl;
    }

    delete [] daty;
    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 244 wizyt
pytanie zadane 11 grudnia 2019 w C i C++ przez felio Nowicjusz (140 p.)
0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 28 stycznia 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)
0 głosów
1 odpowiedź 211 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...