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

Function with an array parameter (the maximum)

Original: Funcție cu vector ca parametru (maximul)

O(n)C++1752 lines2 examples

The idea

An array is passed to a function together with the number of elements: int maxim(int v[], int n). The function actually receives the address of the first element, so it works directly on the array in main (not on a copy). There is also a function void citeste(int v[], int &n) that fills the array; n is passed by reference so the value read reaches main.

Original description (Romanian)

Un vector se transmite unei funcții împreună cu numărul de elemente: int maxim(int v[], int n). Funcția primește de fapt adresa primului element, deci lucrează direct pe vectorul din main (nu pe o copie). Avem și o funcție void citeste(int v[], int &n) care umple vectorul; n este transmis prin referință ca să ajungă valoarea citită în main.

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

Examples

Example 1

Input

5
3 8 -2 8 1

Expected output

8
Example 2

Input

3
-5 -1 -9

Expected output

-1

The code

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

functie-maxim-vector.cpp
/*
 * Titlu: Funcție cu vector ca parametru (maximul)
 * Clasa: 10
 * Capitol: Subprograme (funcții)
 * Descriere: Un vector se transmite unei funcții împreună cu numărul de elemente:
 *            int maxim(int v[], int n). Funcția primește de fapt adresa primului
 *            element, deci lucrează direct pe vectorul din main (nu pe o copie).
 *            Avem și o funcție void citeste(int v[], int &n) care umple vectorul;
 *            n este transmis prin referință ca să ajungă valoarea citită în main.
 * Complexitate: O(n)
 *
 * Exemplu
 * Intrare:
 * 5
 * 3 8 -2 8 1
 * Ieșire: 8
 *
 * Exemplu
 * Intrare:
 * 3
 * -5 -1 -9
 * Ieșire: -1
 */
#include <iostream>
using namespace std;

void citeste(int v[], int &n)
{
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> v[i];
}

int maxim(int v[], int n)
{
    int mx = v[0];
    for (int i = 1; i < n; i++)
    {
        if (v[i] > mx)
            mx = v[i];
    }
    return mx;
}

int main()
{
    int v[1000], n;
    citeste(v, n);
    cout << maxim(v, n) << '\n';
    return 0;
}

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