Sunteți pe pagina 1din 3

Nume şi prenume: 21.10.

2015 – 10MI
Test – subprograme

1. (0.6p) Se consideră următoarea funcţie dată prin prototipul ei:


void f(int a,float b,char c);
În care din următoarele funcţii principale apare un apel corect al funcţiei f? Încercuiţi răspunsul corect.
a) int main()
{char a;float b;int c; f(a,b,c);}
b) int main()
{char a;float c;int b; f(b,a,c);}
c) int main()
{char c;float a;int b; f(a,b,c);}
d) int main()
{char b;float a;int c; f(c,a,b);}

2. (0.7p) Ce se va afișa la finalul executării programului următor?


#include <iostream>
int a=5;
void p()
{int a=3;
{a++; Răspuns: ___________________________________
int a=2;
cout<<a<<' ';
}
cout<<a<<' ';
}
int main()
{a--; p(); cout<<a<<' ';}

3. (0.6 p)Se consideră programul următor:


#include<iostream> Ce se va afișa dacă:
int a,b; float x;
int sub(int c) a) Lipsește linia 5 din program
{
int a,b; //LINIA 5 ______________________________
a=10; b=5;
return a+b+c; b) Nu lipsește linia 5 din program?
}
int main() _____________________________
{
c) Parametrul actual al funcției este:
a=3; b=1;
x=sub(a-b)%10; _____________________
cout<<a<<” ”<<b<<” ”<<x;}

4. (0.6p) Se consideră programul următor. Ce valoare va avea x în urma apelului f(x,x)?


#include<iostream>
void f(int x,int &y)
{ y=y+x;
x=x+y;
}
int main() Răspuns: __________
{int x=2;
f(x,x);
cout<<x;}
5. Se consideră funcția din chenarul de mai jos:

5.1 (0.6p) Completați în căsuța din fața fiecărei afirmații de mai jos litera A sau F după cum propoziția
este adevărată, respectiv falsă.
int f (int &n,int m)
Parametrii funcției sunt transmiși prin referință. { while(n%m==0)
Funcția returnează o singură valoare. { n=n/m; m++;}
return m-1;
Valoarea variabilei n se modifică la întoarcerea din apelul funcției. }
Valoarea variabilei m nu se modifică în timpul execuției funcției.

5.2 (0.8p) Pentru n=120, în urma apelului f(n,2) se va returna valoarea ____________. Valoarea
variabilei n după apel este ____________.

5.3 (0.7p) Știind că valoarea returnată de funcție în urma apelului f(n, 2) este 4, valoarea variabilei n
înaintea apelului a fost: ____________.

6. (0.8p) Deduceţi şirul de valori care se vor afişa în urma execuţiei programului de mai jos:

#include <iostream>
int i,j,k;
int dif(int x,int y)
{return x-y;}
void calcul(int p, int q)
{int u,v;
u=p-i; v=q+j;
i=dif(u,q);
Răspuns: ___________________________________
j=dif(v,p);
}
int main()
{i=2;j=3;
calcul(i,j); cout<<i<<’ ’<<j<<’ ’;
calcul(j,i); cout<<i<<’ ’<<j<<’ ’;
}

7. (1,2p fiecare) Scrieţi definiţiile complete ale următoarelor subprograme:


a) Subprogramul extreme care primeşte ca parametri numerele întregi x, y şi z şi returnează prin
intermediul ultimilor doi parametri cifra minimă, respectiv cifra maximă a numărului transmis.
b) Subprogramul dublare care primeşte ca parametri valorile întregi nr, c și t, unde c reprezintă o cifră,
şi returnează noul număr obţinut din nr prin dublarea tuturor cifrelor de valoare c, iar prin parametrul
t numărul de dublări efectuate.
c) Subprogramul ștergere cu trei parametri: un tablou unidimensional v cu valori întregi, dimensiunea
acestuia n și două valori întregi p și q. Subprogramul șterge elementele din tabloul unidimensional v
aflate între pozițiile p și q (p<=q).
Nume şi prenume: 21.10.2015 – 10MI

Scrieţi programul C++ care citeşte din fişierul DATE.IN numărul întreg n, apoi cele n valori întregi
ale unui vector v. Folosind subprogramele definite anterior, afişaţi:
- câte dintre valorile vectorului au toate cifrele egale
- elementele nenule ale vectorului după înlocuirea fiecărei valori cu o nouă valoare obţinută prin
eliminarea tuturor apariţiilor cifrei maxime, respectiv a cifrei minime ale acesteia.
Exemplu: pentru n=6 şi v = (2135, 777, 9896, 7825, 10617, 3333, 1932 )
Se va afişa: 2
23 8 75 161 32

Punctaj: 1p din oficiu. Fiecare item corect rezolvat 0.7p.


Problema: a) 0.5p b) 1.2p ; b) 1.2p ; funcţia principală 1.2p.

Subprogramul sub are trei parametri:


n, prin care primeste un număr natural (0<n<100);
v, prin care primeste un tablou unidimensional care memorează un sir de n numere
naturale, fiecare având cel puŃin două cifre si cel mult patru cifre;
s, un număr natural (0≤s<18).
Subprogramul determină si afisează pe ecran, separate prin câte un spaŃiu, în ordine
descrescătoare, toate numerele din sir care au suma dintre cifra unităŃilor si cifra zecilor
strict mai mare decât s. Dacă sirul nu conŃine niciun astfel de număr, subprogramul
afisează pe ecran mesajul NU EXISTA. În urma apelului, tabloul transmis subprogramului
ca parametru nu se modifică.
ScrieŃi în limbajul C/C++ definiŃia completă a subprogramului sub.
Exemplu: pentru n=10, v=(351,149,3794,502,785,258,258,1512,489,693),
s=12 în urma apelului, subprogramul afisează pe ecran, în această ordine, valorile:
3794 785 489 258 258 149.

S-ar putea să vă placă și