Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.
Avatar
Oli Wonder
Člen
Avatar
Oli Wonder:21. května 19:45

Zdravím, študujem tunajšie tutoriály a narazil som na funkciu sort(). Ale neviem nájsť podobnu avšak aby mi zoradila čísla zostupne. Dopredu dakujem za váš čas

 
Odpovědět 21. května 19:45
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Oli Wonder
DarkCoder:21. května 20:08

A co číst ta čísla v uspořádaném poli od konce? :-)

Nahoru Odpovědět  +1 21. května 20:08
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na DarkCoder
Oli Wonder:21. května 20:11

reverse?

 
Nahoru Odpovědět 21. května 20:11
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22. května 11:09

Nevim, jak v cpp, ale v js je mozne funkci sort predat parametr, odkaz na funkci, ktera dela porovnani

cmp = function (a,b) {return a<b ? -1 : a==b ? 0 : 1;}
arr.sort(cmp);

A kdyz treba mas vicerozmerne pole, a potrebujes seradit jen podle sloupce 2, 5, 1 v poradi, tak opet to vypada podobne

cmp = function (a,b) {
return a[2]<b[2] ? -1 : a[2]>b[2] ? 1 : a[5]<b[5] ? -1 : a[5]>b[5] ? 1 : a[1]<b[1] ? -1 : a[1]>b[1] ? 1 : 0;
}
arr.sort(cmp);

Mozna srozumitelnejsi zapis je

//return a[2]<b[2] ? -1 : a[2]>b[2] ? 1 : a[5]<b[5] ? -1 : a[5]>b[5] ? 1 : a[1]<b[1] ? -1 : a[1]>b[1] ? 1 : 0;
if (a[2]<b[2]) {return -1;} // return funkci ukonci, pokud je podminka splnena, takze se dalsi if ignoruji
if (a[2]>b[2]) {return 1;}
if (a[5]<b[5]) {return -1;} // kdyz se a[2]==b[2] je treba porovnat dalsi sloupec v poradi a[5]. b[5]
if (a[5]>b[5]) {return 1;}
if (a[1]<b[1]) {return -1;}
if (a[1]>b[1]) {return 1;}
  • 1 je mensi

0 je rovno
+1 je vetsi
Tyhle hodnoty pak potrebuje vedet serazovaci algoritmus.

 
Nahoru Odpovědět 22. května 11:09
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22. května 11:15

Dole, jeden z posl. radku, tam melo byt
-1 je mensi (vyznam returnu te funkce)
Nevim, proc mi to zmenil na odrazku.

 
Nahoru Odpovědět 22. května 11:15
Avatar
Štefan Melich:22. května 11:44

Funkcia std::sort vie preberať 3 parametre.

  1. je iterátor na začiatok štruktúry.
  2. je iterátor na koniec štruktúry.
  3. parameter je objekt, alebo funkcia, ktorá vie 2 prvky zo štruktúry porovnať.

Ak nepoužívaš 3. parameter std::sort použije defaultne (operator<). Najjednoduchšie pre teba bude vytvoriť si funkciu, ktorá ti vráti bool či sú prvky usporiadané správne, alebo nie.

 
Nahoru Odpovědět 22. května 11:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.