Diskuze: Druhé největší čílo

C++ C a C++ Druhé největší čílo

Avatar
DB
Neregistrovaný
Avatar
DB:

Ahojte,

mám takový problém a nemůžu se pohnout dále tak bych prosil o radu. Potřeboval bych nalézt druhé největší číslo, např. int moje_pole[5] = {5, 8, 9, 1, 3};
Vím jak si poradit s nejmenším i největším. Pokud mne někdo nakopne budu rád :). Nejlepší by to bylo přes cyklus a ne za pomocí if-else to bych udělal taky :) .

Díky za rady.

 
Odpovědět 24.10.2013 15:30
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na DB
Zdeněk Pavlátka:

Najdeš největší číslo a uložíš si jeho index. Druhé největší pak najdeš jako největší ze zbytku čísel.

Nahoru Odpovědět 24.10.2013 16:02
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Posix
Člen
Avatar
Posix:
int moje_pole[] = {8, 1, 8};
int max = INT_MIN;
int max2 = INT_MIN;
for (int i = 0; i <sizeof(moje_pole)/sizeof(*moje_pole); i++)
{
        if (moje_pole[i] > max)
        {
                max2 = max;
                max = moje_pole[i];
        }
        else if (moje_pole[i] > max2 && moje_pole[i] < max)
        {
                max2 = moje_pole[i];
        }
}

Pokud jsou v celém poli stejné čísla, tak to vrátí INT_MIN.

Nahoru Odpovědět 24.10.2013 16:05
Proč to dělat jednoduše, když to jde složitě.
Avatar
vitamin
Člen
Avatar
vitamin:

Staci pole zoradiť a vypísať čo chceš:

#include <iostream>
#include <algorithm>


int main(){
        using namespace std;
        int pole[] = {10, 3, -3 , 0, 10, 0, 7};

        sort(begin(pole), end(pole));
        cout << "2 najväčšie číslo: " << end(pole)[-2] << endl;


        auto e = unique(begin(pole), end(pole));
        cout << "2 najväčšie unikátne číslo: " << e[-2] << endl;

        return 0;
}
 
Nahoru Odpovědět  +1 24.10.2013 17:47
Avatar
DB
Neregistrovaný
Avatar
DB:

Díky kluci nějak jsem to podle toho spíchl, ale stejně bych si to vylepšil trošku. Tak by mě zajímalo jak by se dalo uložit index od největšího čísla. Ten postup co píše nuz15.

 
Nahoru Odpovědět 24.10.2013 23:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.