Diskuze: Pomoc s funkciou
Zobrazeno 6 zpráv z 6.
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;}
0 je rovno
+1 je vetsi
Tyhle hodnoty pak potrebuje vedet serazovaci algoritmus.
Dole, jeden z posl. radku, tam melo byt
-1 je mensi (vyznam returnu te funkce)
Nevim, proc mi to zmenil na odrazku.
Funkcia std::sort vie preberať 3 parametre.
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.
Zobrazeno 6 zpráv z 6.