IB001 – Seminární skupiny 16, 17, 18 a 19

Druhý najmenší prvok – zdrojový kód

/*
    Program, ktory najde druhy najmensi prvok postupnosti.
*/

#include <stdio.h>

#define N 10

int main(void)
{
    int postupnost[N] = {7, 13, 6, 6, 5, 2, 1, 14, 21, 9};
    unsigned short iMin, iSecondMin;

    // nacitanie postupnosti
    puts("Zadana posloupnost:");
    for (unsigned short i = 0; i < N; i++)
        printf("%d ", postupnost[i]);

    if (N >= 2)
    {
        // postupnost ma dva alebo viac prvkov

        // inicialne dva prvky
        if (postupnost[0] <= postupnost[1])
        {
            iMin = 0;
            iSecondMin = 1;
        }
        else
        {
            iMin = 0;
            iSecondMin = 1;
        }

        for (unsigned short i = 2; i < N; i++)
        {
            /* ak je aktualny prvok mensi nez doposial znamy minimalny prvok,
               potom aktualizuj iMin aj iSecondMin */
            if (postupnost[i] < postupnost[iMin])
            {
                iSecondMin = iMin;
                iMin = i;
            }
                 /* ak aktualny prvok je medzi, potom aktualizuj iSecondMin  */
            else if (postupnost[i]  < postupnost[iSecondMin])
            {
                iSecondMin = i;
            }
        }

        // vypis postupnosti
        printf("\n\nDruhy najmensi prvok je %d.\n", postupnost[iSecondMin]);
    }
    else
    {
        // postupnost nema ani len dva prvky
        
        printf("Neexistuje druhy najmensi prvok.");
    }

    return 0;
}