• 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
65 wizyt
pytanie zadane 13 stycznia w C i C++ przez Michał_Warmuz Mądrala (5,710 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 przez Wunsz Użytkownik (640 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 przez Michał_Warmuz Mądrala (5,710 p.)
mniej wiecej rozumiem a co do sortowania babelkowego to mam dac daty[n].suma ?
komentarz 13 stycznia przez Wunsz Użytkownik (640 p.)
ale gdzie to chcesz dać
0 głosów
odpowiedź 14 stycznia 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
0 odpowiedzi 31 wizyt
pytanie zadane 26 stycznia w C i C++ przez Ryszard Kałuziński Początkujący (260 p.)
0 głosów
2 odpowiedzi 111 wizyt
pytanie zadane 29 grudnia 2018 w C i C++ przez eSpring Początkujący (260 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

65,805 zapytań

112,454 odpowiedzi

237,603 komentarzy

46,734 pasjonatów

Przeglądających: 236
Pasjonatów: 18 Gości: 218

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.

...