Clasa a X-a · Subprograme (funcții)Read in English
Funcție cu vector ca parametru (maximul) în C++
În engleză: Function with an array parameter (the maximum)
Ideea
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.
Descrierea în engleză
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.
- Complexitate
- O(n)
- Clasa
- Clasa a X-a (Grade 10)
- Capitol
- Subprograme (funcții)
Exemple
Intrare
5 3 8 -2 8 1
Ieșire așteptată
8
Intrare
3 -5 -1 -9
Ieșire așteptată
-1
Codul C++
Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.
/*
* 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;
}
Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.