a) Scrieţi definiţia completă a unui subprogram P cu 3 parametri, care primeşte prin intermediul primului parametru, a, un tablou unidimensional de cel mult 100 de numere întregi, prin intermediul celui de al doilea parametru, k, un număr natural (k<101) şi furnizează prin intermediul celui de al treilea parametru al său, max, cea mai mare dintre valorile a1, a2,..., ak din tablou.

Exemplu: pentru k=5 şi tabloul a=(7,3,8,4,6,9……), în urma apelului P(a,k,max) valoarea variabilei max este 8. (4p.)

b) Să se scrie un program C/C++ care citeşte de la tastatură un număr natural n (n<101), apoi n numere întregi, având maximum 4 cifre fiecare şi construieşte în  memorie şi afişează apoi pe ecran un tablou unidimensional de n numere întregi, cu proprietatea că valoarea termenului de pe poziţia i (i=1,2,…,n) din acest tablou  este egală cu cea mai mare dintre primele i valori din şirul dat. Se vor folosi apeluri utile ale subprogramului P.

Exemplu: dacă se citesc de la tastatură n=12 şi valorile 4 6 3 7 8 1 6 2 7 9 10 8 se va afişa pe ecran tabloul 4 6 6 7 8 8 8 8 8 9 10 10. (6p.)

REZOLVARE

#include <iostream.h>

int i,n; long

a[100],max,v[100];

void p(long a[100],int k,long

&max)

{int i;

max=a[1];

for(i=2;i<=k;i++)

if(a[i]>max) max=a[i];}

void main()

{cout<<"n="; cin>>n;

for(i=1;i<=n;i++)

{cout<<"a["<<i<<"]=";

cin>>a[i]; p(a,i,max);

v[i]=max;}

for(i=1;i<=n;i++)

cout<<v[i]<<' ';}