Minimum- és maximumkeresés

Minimum- és maximumelem megkeresése

Feladat: Adott n, majd n darab egész szám (-1000 és 1000 közöttiek). Írjuk ki, hogy melyik volt a legnagyobb érték a sorozatban!

Pl. bemenet:
        5
        120 30 200 3 5
    kimenet: 200
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <climits>
using namespace std;

int main()
{
    int n;
    cin >> n;

    //int maximum = -1001;
    int maximum = INT_MIN;

    for (int i = 1; i <= n; i++) {
        int szam;
        cin >> szam;

        if (szam > maximum) {
            maximum = szam;
        }
    }

    cout << maximum << endl;
    return 0;
}

Vagy (ha az első elemet használjuk kezdőértéknek):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;

    int maximum;
    cin >> maximum;

    for (int i = 2; i <= n; i++) {
        int szam;
        cin >> szam;

        if (szam > maximum) {
            maximum = szam;
        }
    }

    cout << maximum << endl;
    return 0;
}

További feladatok:

1. Keressük meg egy sorozat legkisebb elemét!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <climits>
using namespace std;

int main()
{
    int n;
    cin >> n;

    //int minimum = 1001;
    int minimum = INT_MAX;

    for (int i = 1; i <= n; i++) {
        int szam;
        cin >> szam;

        if (szam < minimum) {
            minimum = szam;
        }
    }

    cout << minimum << endl;
    return 0;
}

2. Adott n és egy n elemű sorozat (int-ben elférnek az elemek. Keressük a két legnagyobb elemet.

    Pl.
        5
        1 100 2 10 3
        a ket legnagyobb: 100 10

    Pl.
        5
        1 100 2 3 100
        a ket legnagyobb: 100 100

    Pl.
        6
        1 10 2 100 3 200
        a ket legnagyobb: 200 100
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <climits>
using namespace std;

int main()
{
    int n;
    cin >> n;

    int maximum = INT_MIN;
    int masodik_max = INT_MIN;

    for (int i = 1; i <= n; i++) {
        int szam;
        cin >> szam;

        if (szam > maximum) {
            masodik_max = maximum;
            maximum = szam;
        }
        else if (szam > masodik_max) {
            masodik_max = szam;
        }
    }

    cout << maximum << " " << masodik_max << endl;
    return 0;
}

3. Kövessük nyomon a fenti három bemenetre az algoritmus futását!

Megoldás az első bemenetre (a többi HF):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <climits>
using namespace std;

int main()
{
    int n;
    cin >> n;

    int maximum = INT_MIN;
    int masodik_max = INT_MIN;

    for (int i = 1; i <= n; i++) {
        int szam;
        cin >> szam;

        if (szam > maximum) {
            masodik_max = maximum;
            maximum = szam;
        }
        else if (szam > masodik_max) {
            masodik_max = szam;
        }
    }

    cout << maximum << " " << masodik_max << endl;
    return 0;
}
     n           | 5
    -------------+----------------------------------------------------
     maximum     | INT_MIN       1           100    100   100
    ------------------------------------------------------------------
     masodik_max | INT_MIN       INT_MIN     1      2     10 
    ------------------------------------------------------------------
     i           |             1           2      3    4      5  6
    ------------------------------------------------------------------
     szam        |             1           100    2    10     3
     
     KIMENET: 
          100 10

4. Írjunk programot, ami meghatározza a három legkisebb elemet!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <climits>
using namespace std;

int main()
{
    int n;
    cin >> n;

    int minimum = INT_MAX;
    int masodik_min = INT_MAX;
    int harmadik_min=INT_MAX;

    for (int i = 1; i <= n; i++) {
        int szam;
        cin >> szam;

        if (szam < minimum) {

            harmadik_min = masodik_min;
            masodik_min = minimum;
            minimum = szam;
        }
        else if (szam < masodik_min) {
            harmadik_min = masodik_min;
            masodik_min = szam;
        }
        else if (szam < harmadik_min) {
            harmadik_min = szam;
        }
    }

    cout << minimum << " " << masodik_min <<" " << harmadik_min << endl;
    return 0;
}

Kövessük nyomon ezt az algoritmust is valamilyen bemeneti sorozatra (legalább 5 eleme legyen).

(HF)