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 20. 10. 2014 21:20

mysak9
Zelenáč
Příspěvky: 5
Škola: UTB
Reputace:   
 

Vyhledání 3 nejvetěího čísla v posli

Zdravím, potřeboval bych poradit. Potřebuju vyhledat z 3 největší číslo, ale bohužel mi to furt vyhazuje nějaké nesmysli. Tu je můj zdroják, tak zda mi někdo pomůže? :)Díky moc všem.

#include <stdio.h>

int main()
{
    int pole[]={5,8,3,11,22,4,5,55,7,88,7,44,11,33,66,77,4,44,11,22,5,55};   
    int max1,max2,max3,i;
    int pocet_cis = sizeof (pole)/sizeof (int);
    printf("Cisla v poli: \n");
    for (i = 0; i < pocet_cis; i++)
    {
    printf("%d ", pole[i]);       
    }       
   
    {
    if(i>=max1)max1 = i;
    if(max1>=max2)max2 = max1;
    if(max2>=max3)max3 = max2;
    }   
    printf("\n\nTreti nejvetsi cislo je. %d", max1);
    return 0;
}

Offline

 

#2 21. 10. 2014 07:55 — Editoval Formol (21. 10. 2014 07:55)

Formol
Místo: Praha
Příspěvky: 782
Pozice: krotitel mikroskopů (UHIEM 1. LF UK)
Reputace:   42 
 

Re: Vyhledání 3 nejvetěího čísla v posli

↑ mysak9:
Zdravím,
asi jsem už z C trochu vypadl, ale nějak tam nevidím ani náznak toho, že bys něco hledal;-) Napadají mě dvě možnosti, jak bys mohl postupovat:
1. Pole prohledat, najít maximum, to si zapamatovat a z pole odstranit. To zopakuješ 3x a budeš mít tři největší prvky.

2. Vezmeš nějaký algoritmus pro seřazení pole, pole seřadíš a vezmeš tři největší prvky. Algoritmus se můžeš pokusit optimalizovat tak, že bude výsledkem jen to, že první tři prvky budou tři největší; tj. např. pole 3x projedeš BubbleSortem (tedy jedním průběhem).


Доктор сказал «в морг» — значит в морг!

Offline

 

#3 28. 10. 2014 10:53

skoroakvarista
Místo: Praha
Příspěvky: 299
Škola: FJFI ČVUT - ASI
Pozice: Student
Reputace:   20 
 

Re: Vyhledání 3 nejvetěího čísla v posli

↑ mysak9:
Zdar,
nesmysly ti to vyhazuje z několika důvodů.
Proměnné max1,max2,max3 nemáš před jejich použitím inicializované, může v nich být cokoli a ty je porovnáváš.
Tvoje ify jsou mimo forcyklus, porovnání se vykoná pouze jednou.
Porovnáváš a přiřazuješ index i, ne hodnotu proměnné na i-té pozici v poli.

Osobně si myslím, že jsi zvolil nejlepší postup. Pole stačí projet pouze jednou a pamatovat si tři nejvyšší hodnoty.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson