Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 6. 12. 2004, 14:36:29
Zdravim, mam napriklad 3 cisla, ako ich viem usporiadat podla velkosti?
Vdaka |
||
Honza Hučín Profil |
#2 · Zasláno: 6. 12. 2004, 14:58:24
Na víc než dvě čísla už je dobré mít obecnou proceduru na řazení, nejlépe v poli.
Třídění čísel v poli se dá dělat mnoha způsoby. Jeden z těch jednoduchých funguje takto: 1. Pole procházíš od prvního do posledního prvku a hledáš maximální hodnotu. 2. Nalezenou maximální hodnotu prohodíš s hodnotou prvního prvku pole. 3. Opakuješ kroky 1-2, přičemž už nezačínáš od prvního, ale od druhého, pak od třetího atd. až od předposledního prvku pole. |
||
Anonymní Profil * |
#3 · Zasláno: 6. 12. 2004, 15:10:11
Dakujem, k bodu 1, ako najdem maximalnu hodnotu v poli?
|
||
Honza Hučín Profil |
#4 · Zasláno: 6. 12. 2004, 15:13:48
V poli o n prvcích indexovaném od nuly se majde maximální hodnota takto (povšimni si, že for cyklus běží od jedničky):
var maxhodn=pole[0]; for (i=1;i<n;i++) if (pole[i]>maxhodn) maxhodn=pole[i]; |
||
Yuhů Profil |
#5 · Zasláno: 6. 12. 2004, 17:53:44
a nezkoušeli jste někdo sort na pole? Já s tím nemám zkušenosti, ale vím, že existuje.
pole.sort() a pak vypsat pole[0] pole[1] pole[2] ale fakt nevim |
||
Anonymní Profil * |
#6 · Zasláno: 7. 12. 2004, 07:40:48
Zdravim, skusal som nasledovne
<script> function porovnanie (a,b) {return a-b } var t1 = 4 var t2 = 8 var t3 = 1 var cisla = new Array(); cisla = [t1,t2,t3]; usp_cisla = cisla.sort(porovnanie); alert(usp_cisla); toto usporiada cisla. Potreboval by som ale vypisat, ze najmensie cislo obsahuje premenna t3 a ze najvacsie cislo obsahuje premenna t2. Samozrejme v danom pripade Dakujem |
||
Honza Hučín Profil |
#7 · Zasláno: 7. 12. 2004, 08:03:21
V tom případě by mělo fungovat tohle:
var indexmax=0; var indexmin=0; for (i=1;i<n;i++) if (pole[indexmin]>pole[i]) indexmin=i; else if (pole[indexmax]<pole[i]) indexmax=i; V proměnných indexmin a indexmax pak máš indexy pole, ve kterých nastává minimum a maximum. Pokud máš ale vždy jen tři proměnné, asi je rychlejší používat několik příkazů if než kvůli tomu zakládat pole. |
||
Anonymní Profil * |
#8 · Zasláno: 8. 12. 2004, 07:50:29
Vdaka, ale asi sa nerozumieme, obdobne to robil aj moj script, kde sa podla velkosti usporiadali cisla, cize to som vedel, ze minimalma hodnota je ulozena v poli s indexom 0 a maximalna hodnota je ulozena v poli s indexom poslednym.
Ja ale potrebujem vediet, ktora premenna nadobuda maximalnu a minimalnu hodnotu <script> function porovnanie (a,b) {return a-b } var t1 = 4 var t2 = 8 var t3 = 1 var cisla = new Array(); cisla = [t1,t2,t3]; usp_cisla = cisla.sort(porovnanie); alert(usp_cisla); Aby script vypisal, ze premenna t2 obsahuje maximalnu hodnotu a premenna t3 minimalnu hodnotu. Ten script predchadzajuci bola len nahrada za funkciu sort. Vdaka za radu |
||
Honza Hučín Profil |
#9 · Zasláno: 8. 12. 2004, 10:07:40
Hele, já měl pocit, že ti rozumím - to, co jsem napsal, produkuje ne konkrétní hodnoty, ale indexy pole, ve kterých nastává maximum a minimum. Takže kdybych přidal třeba
alert('Maximum se nabývá v ' + indexmax + ' . proměnné'); vypíše mi to, v kolikáté položce pole je maximální hodnota. Pokud máš jen tři proměnné a chceš vědět, která je největší, je rychlejší řešení pomocí několika if: if (t1>t2) if (t1>t3) alert('Největší je t1.'); else alert('Největší je t3.'); else if (t2>t3) alert('Největší je t2.'); else alert('Největší je t3.'); |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0