Grade 10 · Subprograms (functions)Citește în română

Minimum and maximum returned by reference

Original: Minim și maxim întoarse prin referință

O(n)C++1749 lines2 examples

The idea

A function can return a single value with return. When we need several results, we make them reference parameters: void minMax(int v[], int n, int &mn, int &mx). The function writes directly into the variables of main. We print the minimum and the maximum of the array.

Original description (Romanian)

O funcție poate întoarce cu return o singură valoare. Când avem nevoie de mai multe rezultate, le punem ca parametri prin referință: void minMax(int v[], int n, int &mn, int &mx). Funcția scrie direct în variabilele din main. Afișăm minimul și maximul vectorului.

Complexity
O(n)
Grade
Grade 10 (Clasa a X-a)

Examples

Example 1

Input

6
4 -3 10 7 -3 2

Expected output

-3 10
Example 2

Input

1
42

Expected output

42 42

The code

Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.

minim-si-maxim-prin-referinta.cpp
/*
 * Titlu: Minim și maxim întoarse prin referință
 * Clasa: 10
 * Capitol: Subprograme (funcții)
 * Descriere: O funcție poate întoarce cu return o singură valoare. Când avem nevoie
 *            de mai multe rezultate, le punem ca parametri prin referință:
 *            void minMax(int v[], int n, int &mn, int &mx). Funcția scrie direct în
 *            variabilele din main. Afișăm minimul și maximul vectorului.
 * Complexitate: O(n)
 *
 * Exemplu
 * Intrare:
 * 6
 * 4 -3 10 7 -3 2
 * Ieșire: -3 10
 *
 * Exemplu
 * Intrare:
 * 1
 * 42
 * Ieșire: 42 42
 */
#include <iostream>
using namespace std;

void minMax(int v[], int n, int &mn, int &mx)
{
    mn = mx = v[0];
    for (int i = 1; i < n; i++)
    {
        if (v[i] < mn)
            mn = v[i];
        if (v[i] > mx)
            mx = v[i];
    }
}

int main()
{
    int v[1000], n;
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> v[i];
    int mic, mare;
    minMax(v, n, mic, mare);
    cout << mic << ' ' << mare << '\n';
    return 0;
}

Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.