Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Ak chcem naprogramovať program, ktorý si bude brať z Array poľa, povedzme, 10 náhodných hodnôt. A potrebujem zistiť najväčšie číslo, nemusím porovnávať vždy i (ak i je číslo poľa Array, ktoré aktuálne porovnávam) so všetkými ostatnými?
Stačí ak najprv porovnám prvé číslo zo všetkými ostatnými a potom už len porovnávam i z najvyššou hodnotou ktorú som aktuálne našiel. (Trochu nezrozumiteľne napísané, ale skúsim znázorniť)
Offline

Zdravím,
já jsem teda céčkař, delphi mi nikdy k srdci nepřirostlo, ale algoritmu na zjišťování nejvyšší hodnoty pole je všude stejný.
Tedy pseudokód:
Zavedeme proměnnou, kterou incializujeme nulou (v případě, že máme pole nezáporných čísel), nebo nějakou limitní minimální hodnotou (definovanou určitě v dokumentaci k jazyku, a (v případě jazyka C též v limits.h, jako symbolická konstanta (INT_MIN, myslím)
Dále zavedeme funkci, která bude mít za úkol porovnat dvě hodnoty, a vrátit tu větší (ve většině jazyků je tato funkce knihovní, pokud není, ta vypadá nějak takto: int max(int a, int b) {if(a >= b) return a; else return b;}
Pak zavedeme cyklus, který projde pole od začátku, a v tomto cyklu otestujeme kažou jednu proměnnou, v C bude vypadat nějak takto:
int iMax = INT_MIN;
for(int i = 0; i < ARRAY_MAX; i++)
{
iMax = max(iMax, searchedArray[i]);
}
Po ukončení tohoto cyklu budeš mít v proměnné iMax nejvyšší hodnotu, která se v poli nachází.
Offline
↑ betacheer:
Tady máš v Delphi napsány 2 funkce. Jedna pro nalezení minima v poli , druhá pro nalezení maxima.
function MinPole(a:array of Extended):Extended;
var i:Integer;
begin
Result := a[0];
for i := 1 to Length(a)-1 do
if a[i]<Result then
Result := a[i];
end;
function MaxPole(a:array of Extended):Extended;
var i:Integer;
begin
Result := a[0];
for i := 1 to Length(a)-1 do
if a[i]>Result then
Result := a[i];
end;
↑ frank_horrigan:
Jenom malá technická. Proč inicializovat proměnnou nějakou nulou, když stejně dobře poslouží inicializovat ji prvním prvkem pole.
Offline

Honzo, máš pravdu, jenom asi můj starej zvyk inicializovat všechno nulou, než to použiju :)
Offline
Stránky: 1