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 05. 05. 2011 19:26

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Nalezení minima a maxima zadané množiny hodnot

Ahoj, mám problém s algoritmem, který má nalézt minimum a maximum z určité množiny.
Napadlo mě, že porovnám všechny prvky množiny (26 prvků) a tímto způsobem zjistím, který záznam má nejvyšší hodnotu a samozřejmě i nejnižší, ale nedaří se mi vymyslet algoritmus, který by fungoval v praxi.
Celý proces porovnávání jsem zacyklil.

Nevíte někdo jak na to, aby vše bylo funkční?

Díky moc.


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

  • (téma jako vyřešené označil(a) ReVolt)

#2 05. 05. 2011 19:32

jindra
Příspěvky: 78
Reputace:   
 

Re: Nalezení minima a maxima zadané množiny hodnot

V jakém jazyce?

Obecně:
Vytvoříš 3 proměné:
int max;
int min;
pole mnozina;

int max = mnozina[0];
int min = mnozina[0];

for(int i = 1; i < mnozina.count();i++)
{

   if(mnozina[i]>max)
     max = mnozina[i];

   if(mnozina[i]<min)
    min = mnozina[i]; 
}

Offline

 

#3 05. 05. 2011 22:19

check_drummer
Příspěvky: 4650
Reputace:   101 
 

Re: Nalezení minima a maxima zadané množiny hodnot

↑ ReVolt:
Myšlenka (rekurze): pro jednoprvkovou množinu je maximem i minimem tento prvek. Nechť pro n prvkouvou množinu A máme maximum a minimum max(n) a min(n), pak pro n+1 prvkovou množinu (A spolu s nějakým dalším prvkem b) je max(n+1)=max(max(n),b), min(n+1)=min(min(n),b). Stačí tedy provést celkem 2.(n-1) porovnání. Vždy však alespoň n-1.


"Máte úhel beta." "No to nemám."

Offline

 

#4 06. 05. 2011 12:01

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Re: Nalezení minima a maxima zadané množiny hodnot

Děkuji za konstruktivní příspěvky, prosím načrtněte někdo prosím vývoják, nějak mi to nedochází a nemůžu si to všechno srovnat.
Množinově jsem to pochopil, i princip zjištění minima a maxima, ale program z toho nějak nemůžu vyždímat.
Poslední dobou jsem njakej dutej, tak se nezlobte, že pořád prudím.


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

 

#5 06. 05. 2011 13:56

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 869
Reputace:   62 
 

Re: Nalezení minima a maxima zadané množiny hodnot

Jindra ti napsal správný postup, pokud se ho budeš držet, tak ti to bude fungovat.

Program bude mít několik částí:

1. Nejdřív musíš mít Pole obsahující všechna data jenž se budou prohledávat. Příklad v Maximě:

Code:

Pole: [5,1,7,3,5,2,9,9,1,2,4,6]

2. Vytvoříš si dvě proměnné, které pojmenuješ Max a Min. Do proměnné o názvu Min budeš ukládat nejnižší nalezený prvek a do proměnné Max budeš ukládat nejvyšší nalezený prvek. Pro začátek do nich vložíš první položku z prohledávaného Pole:

Code:

Min: Pole[1];
Max: Pole[1];

Tím obě proměnné Max a Min budou mít hodnotu Pole[1], která je 5 (viz první část). Dvojtečka je v Maximě přiřazení hodnoty.

3. Teď budeš ve smyčce for procházet všechny položky z Pole od druhého členu až po poslední člen pomocí indexu i. Poslední člen zjistím příkazem lenght(Pole).
V tělu smyčky for budu provádět kontrolu zda proměnná Min je větší jak kontrolovaná položka z Pole, pokud ano tak do proměnné Min zapíšu nově nalezenou hodnotu. Obdobně to udělám pro proměnou Max, ale obráceně. tentokrát pokud Max je menší než kontrolovaná položka, tak jsem našel novou větší hodnotu.

Code:

for i:2 thru length(Pole) do (
    if Min>Pole[i] then Min: Pole[i],
    if Max<Pole[i] then Max: Pole[i]
);

4. Nyní už je to všechno. Pokud si vše správně opsal, tak v proměnné Min se nalézá nejmenší hodnota a v proměnné Max zase nejvyšší hodnota.

Poznámka: v Maximě první položka Pole začíná jedničkou, v jiném jazyku může začínat nulou.


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#6 06. 05. 2011 14:05

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 869
Reputace:   62 
 

Re: Nalezení minima a maxima zadané množiny hodnot

http://www.sdilej.eu/pics/0c2b584b5340e0b6772eede325cf54c3.png


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#7 06. 05. 2011 14:18 — Editoval ReVolt (06. 05. 2011 14:19)

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Re: Nalezení minima a maxima zadané množiny hodnot

Moc díky, nějak jsem to předtím pomotal, těď už vím co a jak

jinak ještě informace: píšu to v C#


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

 

#8 06. 05. 2011 14:46

jindra
Příspěvky: 78
Reputace:   
 

Re: Nalezení minima a maxima zadané množiny hodnot

Pokud by ti to stále nešlo, tady máš funkční řešení v C#

Code:

 int[] mnozina = { 5, 10, 11, 1 };

            //Nastavíme první hodnotu. C# má pole od 0
            int max = mnozina[0];
            int min = mnozina[0];

            for (int i = 1; i < mnozina.Count(); i++)
            {
                if (mnozina[i] > max)
                {
                    max = mnozina[i];
                }

                if (mnozina[i] < min)
                {
                    min = mnozina[i];
                }
            }
            Console.WriteLine("Největší: " + max);
            Console.WriteLine("Nejmenší: " + min);
            Console.ReadLine();

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson