Matematické Fórum

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

#1 15. 02. 2012 20:19

betacheer
Zelenáč
Příspěvky: 2
Reputace:   
 

Porovnanie viacerých hodnôt v Delphi/Object Pascal

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

 

#2 15. 02. 2012 23:44 — Editoval frank_horrigan (15. 02. 2012 23:44)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Porovnanie viacerých hodnôt v Delphi/Object Pascal

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í.


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#3 16. 02. 2012 10:07 — Editoval Honzc (16. 02. 2012 10:40)

Honzc
Příspěvky: 4647
Reputace:   248 
 

Re: Porovnanie viacerých hodnôt v Delphi/Object Pascal

↑ 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

 

#4 16. 02. 2012 14:58

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Porovnanie viacerých hodnôt v Delphi/Object Pascal

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


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#5 16. 02. 2012 16:04

betacheer
Zelenáč
Příspěvky: 2
Reputace:   
 

Re: Porovnanie viacerých hodnôt v Delphi/Object Pascal

Ďakujem za pomoc a objasnenie :D

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson