Autor Zpráva
Anonymní
Profil *
Zdravim, mam napriklad 3 cisla, ako ich viem usporiadat podla velkosti?

Vdaka
Honza Hučín
Profil
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 *
Dakujem, k bodu 1, ako najdem maximalnu hodnotu v poli?
Honza Hučín
Profil
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
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 *
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
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 *
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
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.');
Toto téma je uzamčeno. Odpověď nelze zaslat.