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

question-closed Dziwne errory (quicksort)

Object Storage Arubacloud
0 głosów
326 wizyt
pytanie zadane 2 czerwca 2015 w C i C++ przez criss Mędrzec (172,590 p.)
zamknięte 17 listopada 2016 przez criss

Chciałem zrobić funkcje sortującą elementy vectora. Dodam, że to jest vector obiektów. Niestety wyrzuca mi dziwne błędy. (tak, wiem, że ona sortuje cały wektor i nie mam innej możliwości, tak ma być).

template <class U>
void quicksort(vector<U> &tab,int left, int right)
{
    int os=tab[tab.size()/2].def;
    int p=0,q=tab.size()-1;
    U tmp; //to bedzie dzialac? 
    do
    {
        while(tab[p].def<os) p++;
        while(tab[q].def>os) q--;
        if(tab[p].def<=tab[q].def)
        {
            tmp=tab[p];
            tab[p]=tab[q];
            tab[q]=tmp;
            p++;
            q--;
        }
    }
    while(p<=q);
    if(q>0) quicksort(tab, left, q);
    if(p<tab.size()-1) quicksort(tab, p, right);
}

Błędy:

variable or field `quicksort' declared void
template declaration of `int quicksort' ( przeciez jest void! )
`vector' was not declared in this scope (jest dodana biblioteka - #include <vector> )
expected primary-expression before '>' token
`tab' was not declared in this scope
expected primary-expression before "int"
expected primary-expression before "int" (jaki int?! o_O )

//wszystkie powyższe odnoszą się do pierwszej linii, poniższy do drugiej
expected `;' before '{' token

komentarz zamknięcia: .

3 odpowiedzi

+1 głos
odpowiedź 2 czerwca 2015 przez draghan VIP (106,230 p.)

A czy masz dodane

using std::vector;

? :)

komentarz 2 czerwca 2015 przez criss Mędrzec (172,590 p.)
Ahh, w ogóle nie miałem using namespace std : D

Błędów już nie ma. Ale samo sortowanie nie działa :c
komentarz 2 czerwca 2015 przez draghan VIP (106,230 p.)
Teraz już trochę późno na analizę - jeśli jutro nikt Ci nie pomoże, to rzucę okiem. :) Dobrej nocy!
komentarz 2 czerwca 2015 przez draghan VIP (106,230 p.)

Okej... Wrzuciłem sobie to, co napisałeś do edytora, dodając banalną strukturę z jednym jedynym polem int def. No i oczywiście nie działa. :D

Na początek... Co mają oznaczać zmienne i oraz j? ;)

komentarz 2 czerwca 2015 przez criss Mędrzec (172,590 p.)
edycja 2 czerwca 2015 przez criss
Ahh, to już poprawiłem, sorry. Zamiast i jest p, zamiast j - q. (poprawilem post)
0 głosów
odpowiedź 2 czerwca 2015 przez Radfler VIP (101,030 p.)
Na pewno dodałeś bibliotekę <vector>? Bo z tych błędów wynika, że nazwa vector nie istnieje :)
komentarz 2 czerwca 2015 przez criss Mędrzec (172,590 p.)
Tak, sorry, dopisalem to jak odpisywales pewnie.
komentarz 2 czerwca 2015 przez criss Mędrzec (172,590 p.)
Btw coś mi się wydaje, że zmienna tmp nie będzie tak działać (czyli do przetrzymania na chwile jednego obiektu żeby zamienić miejscami elementy). To może tak być?
komentarz 2 czerwca 2015 przez Radfler VIP (101,030 p.)

Jeżeli typ zmiennej tmp ma zdefiniowany operator przypisania to wszystko powinno działać dobrze :) Ale zamiast tworzyć dodatkową zmienną, użyj algorytmu swap():

swap(PierwszyObiekt, DrugiObiekt);
0 głosów
odpowiedź 2 czerwca 2015 przez Wiciorny Ekspert (269,710 p.)
twoja funkcja zwraca wartość void... okej, jednak jej argumentem jest referencja do tab [  zeby pobrac referencje musisz ja wczesniej zdeklarowac ... np w main bo tak to funkcja nie wie co za argument ma pobrac ] ( pobierasz tutaj nie kopie tylko oryginał ). Tab jest typu int więc zwracana będzie wartość typu int, przez to widnieje problem prawdopodobnie.
komentarz 2 czerwca 2015 przez criss Mędrzec (172,590 p.)
Nie no, to już naprawiłem poprzez dodanie using namespace std.

Podobne pytania

+1 głos
1 odpowiedź 190 wizyt
pytanie zadane 27 czerwca 2020 w C i C++ przez Marcinuq Użytkownik (640 p.)
0 głosów
1 odpowiedź 484 wizyt
pytanie zadane 23 kwietnia 2020 w C i C++ przez Rrafał98 Nowicjusz (240 p.)
0 głosów
1 odpowiedź 329 wizyt
pytanie zadane 28 marca 2020 w C i C++ przez wall7489 Obywatel (1,250 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

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

...