[C++][spoj] sort 1

spammer
Użytkownik
Użytkownik
Posty: 174
Rejestracja: 15 sty 2009, o 17:28
Płeć: Mężczyzna
Podziękował: 40 razy
Pomógł: 12 razy

[C++][spoj] sort 1

Post autor: spammer »

Siemka.

Mam takie jedno zadanko ze spoja o nazwie sort 1 - .

Muszę zaimplementować quicksorta i to jakoś:D posortować.....

Na razie mam coś takiego:
Ukryta treść:    
Podczas wywoływania qsort'a jakiś błąd mi wyskakuje. Mógłby ktoś pomóc ??:D
natkoza
Użytkownik
Użytkownik
Posty: 2278
Rejestracja: 11 kwie 2007, o 18:49
Płeć: Kobieta
Lokalizacja: Dąbrowa Górnicza
Podziękował: 41 razy
Pomógł: 602 razy

[C++][spoj] sort 1

Post autor: natkoza »

ja kiedyś napisałam(a moze gdzieś znalazłam.. juz nie pamiętam ) coś takiego
Ukryta treść:    
sortuje on akurat tablice 100 elementową wypełniana losowymi liczbami
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

[C++][spoj] sort 1

Post autor: Szemek »

spammer pisze:Podczas wywoływania qsort'a jakiś błąd mi wyskakuje. Mógłby ktoś pomóc ??:D
problem nie tkwi w samym qsort, ale w przekazywaniu argumentów do funkcji

Kod: Zaznacz cały

qsort(nazwa[i], 0, n-1);
qsort operuje na int, a ty przekazujesz jedną komórkę tablicy typu string

Kod: Zaznacz cały

int x[100], y[100];
tablice powinny być rozmiaru 1000?


Zastanów się nad tym jak chcesz te dane zgromadzić, w jakiej strukturze (tutaj 3 tablice nie ułatwiają rozwiązania zadania)
A następnie wykorzystaj odpowiednio sortowanie.
I nie zapominaj o głównej treści zadania: Posortuj je względem odległości od środka układu współrzędnych.
spammer
Użytkownik
Użytkownik
Posty: 174
Rejestracja: 15 sty 2009, o 17:28
Płeć: Mężczyzna
Podziękował: 40 razy
Pomógł: 12 razy

[C++][spoj] sort 1

Post autor: spammer »

Hmmm.
Do zgromadzenia tych danych utworzyłem strukturę.
Zmieniłem algorytm quicksorta na ten, który zakłada, że elementem osiowym jest środkowy element tablicy - nie wiem do końca czy to coś zmienia:p
Jednak nadal kompilator czepia się mnie o ten qsort (błędów jest mniej przy tym powyżej opisanym algorytmie niż przy tym pierwszym).
Chyba chodzi o coś z tą strukturą, bo błąd jest następujący:

Kod: Zaznacz cały

61 C:\sort1.cpp cannot convert `odl' to `void*' for argument `1' to `void qsort(void*, size_t, size_t, int (*)(const void*, const void*))' 


A oto kod:
Ukryta treść:    
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

[C++][spoj] sort 1

Post autor: Szemek »

a miałem Ci napisać, żebyś zmienił nazwę funkcji, bo taki algorytm o takiej samej nazwie jest w bibliotece stdlib.h
i właśnie o to pluje się kompilator

widzę już trochę więcej pomyślunku w tym nowym kodzie, ale to jeszcze nie będzie działać
a nie lepiej zrobić strukturę na 4 pola: nazwa, x, y, d?

Kod: Zaznacz cały

qsort(tab[i], n, odleglosc);
źle! złe wywołanie i do tego jeszcze w pętli

sortowanie powinieneś (po wprowadzeniu wszystkich danych!) wywołać np. tak:
sortuj(tablica, indeks_poczatku, indeks_konca)
i w algorytmie przerobić tak, żeby sortować względem ostatniego pola, tj. odległości
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

[C++][spoj] sort 1

Post autor: matshadow »

Nie lepiej skorzystać z quicksorta STL-owskiego?
Ukryta treść:    
spammer
Użytkownik
Użytkownik
Posty: 174
Rejestracja: 15 sty 2009, o 17:28
Płeć: Mężczyzna
Podziękował: 40 razy
Pomógł: 12 razy

[C++][spoj] sort 1

Post autor: spammer »

No wież :D Jakby nie to, że to zadanie na kółko, to bym użył właśnie stl'a :D

PS: Szemek zmieniłem nazwę funkcji i dalej kompilator się mnie czepia :(
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

[C++][spoj] sort 1

Post autor: matshadow »

kółko czy nie kółko, wiem że fajnie jest zabłysnąć samemu napisaną funkcją, ale ja tam wole używać coś, co już jest stworzone
spammer
Użytkownik
Użytkownik
Posty: 174
Rejestracja: 15 sty 2009, o 17:28
Płeć: Mężczyzna
Podziękował: 40 razy
Pomógł: 12 razy

[C++][spoj] sort 1

Post autor: spammer »

Nie chodzi o to, że zabłysnąć, tylko że nauczyciel kazał napisać samemu quicksort'a :D
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

[C++][spoj] sort 1

Post autor: Szemek »

spammer pisze:PS: Szemek zmieniłem nazwę funkcji i dalej kompilator się mnie czepia :(
Nie tylko o tym pisałem w poprzednim poście.

poniżej działający kod, został zaakceptowany na SPOJu
Ukryta treść:    
spammer pisze:Jakby nie to, że to zadanie na kółko, to bym użył właśnie stl'a
Sztuką jest pisanie programów z pewnymi ograniczeniami, ale trzeba też umieć korzystać z gotowych klocków. Zawsze zaczynaj od analizy problemu, a dopiero później zapisu w języku programowania.
spammer
Użytkownik
Użytkownik
Posty: 174
Rejestracja: 15 sty 2009, o 17:28
Płeć: Mężczyzna
Podziękował: 40 razy
Pomógł: 12 razy

[C++][spoj] sort 1

Post autor: spammer »

Dzięki Szemek za poświęcony czas.
Przeanalizuję ten twój kod i spróbuję na przyszłość go nie popełniać.

Jeszcze raz wielkie dzięki
ODPOWIEDZ