IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze: Pomoc s funkciou

Aktivity
Avatar
Oli Wonder
Člen
Avatar
Oli Wonder:21.5.2018 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.5.2018 19:45
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Oli Wonder
DarkCoder:21.5.2018 20:08

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

Nahoru Odpovědět
21.5.2018 20:08
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na DarkCoder
Oli Wonder:21.5.2018 20:11

reverse?

 
Nahoru Odpovědět
21.5.2018 20:11
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22.5.2018 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.5.2018 11:09
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22.5.2018 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.5.2018 11:15
Avatar
Štefan Melich:22.5.2018 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.5.2018 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.