3 největší číslo – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

3 největší číslo – C / C++ – Fórum – Programujte.com3 největší číslo – C / C++ – Fórum – Programujte.com

 

d
~ Anonymní uživatel
2 příspěvky
20. 10. 2014   #1
-
0
-

Zdravím, potřeboval bych poradit jak z pole vypsat 3 největší číslo, furt to nějak nemůžu dat do kopy, tu je můj zdroják, díky.

#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;
}

Nahlásit jako SPAM
IP: 82.100.30.–
crazy
~ Moderátor
+10
Grafoman
20. 10. 2014   #2
-
0
-

Třeba takhle jednoduše:

#include <stdio.h>
#include <stdlib.h>

int comp(const void * p1, const void * p2)
{
        return *(int*)p2 - *(int*)p1;
}

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 pocet_cis = sizeof (pole)/sizeof (int);

    qsort(pole, pocet_cis, sizeof(int), comp);

    printf("\n\nTreti nejvetsi cislo je. %d", pole[2]);
    return 0;
}
Nahlásit jako SPAM
IP: 89.103.111.–
All you need is vision and time.
21. 10. 2014   #3
-
+1
-
Zajímavé

#1 d
Neinicializuješ max1, max2, max3.  Na  if(i>=max1)max1 = i; ti asi píše syntaktickou chybu. 

Kromě qsort by se na to dalo jít i tak, že seřadíš jen první tři prvky pole podle velikosti a použiješ je jako počáteční hodnotu pro max1, max2, max3 (zde by šlo použít pole). Pak budeš s těmito porovnávat ostatní prvky pole a přepisovat max1, max2, max3 podle pravidel:

 je-li prvek pole > max1, pak max1 = prvek pole, jinak
      je-li prvek pole > max2, pak max2 = prvek pole, jinak
           je-li prvek pole > max3, pak max3 = prvek pole

V max3 pak zůstane třetí největší. Stačí jeden cyklus. Pravděpodobně to bude efektivnější než qsort

Nahlásit jako SPAM
IP: 2001:67c:1222:800:ccd:4c5...–
peter
~ Anonymní uživatel
3981 příspěvků
21. 10. 2014   #4
-
0
-

Nebo tam muze dat nuly (-1), kdyz vi, ze cisla v poli jsou vetsi nez nula. A cely algoritmus se mu o neco zjednodusi.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:d09c:23...–
21. 10. 2014   #5
-
+1
-
Zajímavé

Vzhledem k tomu, že pole je int (defaultně signed) a nikde není dáno, že jsou to jen přirozená čísla, tak bych od takového zjednodušení upustil.

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:ccd:4c5...–
KIIV
~ Moderátor
+43
God of flame
21. 10. 2014   #6
-
0
-

Na takovy akce pouzivam Select Sort, kterej stopnu jakmile mam vse, co potrebuju... nema smysl to radit cele

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý