Sunteți pe pagina 1din 6

Fișa recapitulare teză- Aplicații subprograme nerecursive.

SET I

1. Fie următoarea secvență de program C++.


Indicați următoarele componente ale programului:
a. Variabile globale
b. Variabile locale
c. Parametri formali și modul de transmitere
d. Parametri actuali/efectivi și modul de transmitere
e. Antetul funcției
f. Apelul funcției
g. Rezultatul programului
h. Care este rezultatul dacă a=12 și b=34

2. Fie următoarea secvență de program C++.


Indicați următoarele componente ale programului:
a. Variabile globale
b. Variabile locale
c. Parametri formali și modul de transmitere
d. Parametri actuali/efectivi și modul de transmitere
e. Antetul funcției
f. Apelul funcției
g. Rezultatul programului pentru a=15 și b=42
h. Care este rezultatul dacă a=1000 și b=5000

3. Fie următoarea secvență de program C++.


Indicați următoarele componente ale programului:
a. Variabile globale
b. Variabile locale
c. Parametri formali și modul de transmitere
d. Parametri actuali/efectivi și modul de transmitere
e. Antetul funcției
f. Apelul funcției
g. Rezultatul programului
h. Care este rezultatul dacă a=48 și b=72
SET II

Identificați tipul funcției(funcție cu tip/procedurală) și modalitatea de transmitere a parametrilor. Pentru


următoarele cerințe scrieți doar antetul funcțiilor:

1. Subprogramului divizor, are trei parametri, prin care primește 3 numere naturale nenule, cu cel mult 9
cifre fiecare și returnează numărul divizorilor comuni tuturor celor 3 numere.
2. Subprogramul Nr are un singur parametru, k, prin intermediul căruia primește un număr natural de cel
puțin 3 cifre și cel mult 9 cifre, cu toate cifrele nenule. Subprogramul furnizează tot prin intermediul
parametrului k, valoarea obținută prin eliminarea primei și ultimei cifre a numărului transmis la apel.
3. Subprogramul număr are patru parametri, n un număr natural format din cel mult 9 cifre, iar prin
intermediul parametrilor c1 și c2 câte o cifră cu proprietatea că c1<c2. Subprogramul furnizează prin
intermediul celui de-al patrulea parametru, x, o valoare obținută prin eliminarea din numărul n a fiecărei
cifre cuprinse în intervalul [c1,c2]. Dacă toate cifrele numărului aparțin acestui interval, valoarea furnizată
prin x va fi 0.
4. Subprogramul divi are doi parametri, n un număr natural nenul cu cel mult 6 cifre și returnează prin
intermediul parametrului d, cel mai mic divizor propriu a lui n sau 0 în cazul în care n nu are nici un
divizor propriu.
5. Subprogramul prim are doi parametri, care primește prin intermediul parametrului n, un număr natural cu
cel mult 4 cifre și returnează prin intermediul parametrului p valoarea 1 dacă numărul nu este prim și 0 în
caz contrar.
6. Subprogramul test cu trei parametri care primește prin intermediul parametrului n un număr natural de
maximum 9 cifre, prin intermediul parametrului c o cifră și furnizează prin intermediul parametrului k
numărul de cifre ale numărului n care aparțin intervalului [c-1,c+1].

Set III

1. Subprogramul C++ f realizează interschimbarea valorilor a două variabile întregi transmise prin
intermediul parametrilor x şi y. Care este antetul corect al subprogramului f?
Varianta 1
void f(int &x, int &y)

Varianta 2 int f(int x,int y)

Varianta 3 void f(int x, int &y)

Varianta 4 void f(int &x, int y)

2. Care dintre următoarele declarări reprezintă antetul corect al f, cu un parametru ,


unei funcții real a
funcție care returnează un rezultat întreg?
Varianta 1 int f(float a)

Varianta 2 float f(float a)

float f(int a)
Varianta 3

Varianta 4 f(int a): float

3. Este definită o funcție smax care primește două valori întregi prin intermediul a doi parametri și
returnează suma tuturor cifrelor celor două numere.
De exemplu, smax(73, 608) returnează 24 (7+3+6+0+8). Stabiliți în ce mod se poate apela smax pentru
a determina suma cifrelor unui număr întreg n.

Varianta 1 smax(n, n)

Varianta 2 smax(n, 0)

Varianta 3 smax(n, 1)

Varianta 4 nu se poate utiliza


4. Se știe că este definit subprogramul prime ce primește prin doi parametri x și y două valori întregi și
returnează numărul de numere prime din intervalul închis [x, y], numai dacă x<y. Care dintre următoarele
expresii este adevărată numai dacă valoarea întreagă z (z>5) este număr prim?
Varianta 1 prime (2, z ) ≠ prime (2, z-1)

Varianta 2 prime (2, z) ≠ prime (2, z+1)

Varianta 3 prime (z-1, z) = prime (z, z+1)

Varianta 4 prime (z, z) = 1

5. Se presupune că este definită o funcție min care primește două valori reale prin intermediul a doi
parametri și returnează cea mai mică dintre cele două valori. Stabiliți care dintre următoarele expresii
este egală cu cea mai mare dintre valorile reale a și b.
Varianta 1 a-min(a, b)+b-min(b, a)

Varianta 2 min(a, b)

Varianta 3 min(a, b)-a-b

Varianta 4 a+b-min(a,b)

6. Subprogramul fct este definit mai jos, parțial.

Inițial, variabile întregi a, b și c au valorile a=8, b=31 și c=9, iar după apelul fct(a,b,c), valorile celor trei
variabile sunt a=9, b=31 și c=39. Care poate fi antetul subprogramului fct?
Varianta 1 void fct(int &x,int &y,int &z)

Varianta 2 void fct(int x,int &y,int &z)


Varianta 3 void fct(int x,int y,int z)

Varianta 4 void fct(int &x,int y,int &z)

7. Precizați care dintre următoarele linii de program reprezintă corect, din punct de vedere sintactic, lista
de parametri și valoarea returnată de o funcție cu numele test. Funcția conține doi parametri de intrare
de tip întreg, x și y, și o variabilă de tip real z. Funcția returnează un rezultat întreg.
Varianta 1 int test(int x, y; float z)

Varianta 2 test(int x; int y; float z) int

Varianta 3 int test(int x, int y, float z)


Varianta 4 test(int x, int y, float z)

8. Care este antetul corect al subprogramului C/C++ elimin_impar care primește prin intermediul
parametrului x un număr natural și furnizează prin intermediul aceluiași parametru x numărul obținut
prin eliminarea tuturor cifrelor impare din x?
Varianta 1 int elimin_impar(int &x)

Varianta 2 void elimin_impar(int x)

Varianta 3 void elimin_impar(int &x)

Varianta 4 int elimin_impar(int x)

9. Fie următorul program. Căutați erorile și explicați efectul lor.


10. Ce valori va afișa 11. Care este rezultatul 13. Ce valori va afișa programul
programul următor? următorului program dacă următor?
m=64?
12. Ce valoare trebuie citită în
variabila m astfel încât
programul următor să
afișeze valoarea 4?

#include<iostream> #include<iostream> #include<iostream>


using namespace using namespace std; using namespace std;
std; int n,m; int void F(int &nr, int x) void F(int &nr, int x)
t(int n, int &m) { do{ { do{
x=x/2; x=x/2;
{
nr++; nr++;
n+=2; m--; }while(x>0 && x%2==0); }while(x>0 && x%2==0);
return n+m; } }
} int main() int main()
int main() { {
{ int m, n; int m, n;
n=2; m=5; cin>>m; n=0; cin>>m; n=0;
cout<<t(n,m)<<n” “<<m; F(n,m); F(n,m);
n=10; m=20; cout<<n; cout<<n;
cout<<t(n,m)<<n” “<<m; return 0; return 0;
return 0; } }
}

SETUL IV

Scrieți pentru fiecare dintre următoarele cerințe câte două funcții(o funcție cu tip și o funcție procedurală) care
să aibă același efect. Apelați cele două funcții și afișați rezultatul lor.
a. Suma cifrelor unui număr natural x
b. Cifra maximă din numărul x
c. Numărul de cifre a unui număr natural x
d. Prima cifră din numărul x
e. Oglinditul numărului x
f. Eliminarea cifrelor pare din x
g. Dublarea cifrelor impare în x
h. Verificarea proprietății de număr prim
i. Suma divizorilor proprii numărului x
j. Numărul divizorilor primi ai numărului x

SETUL V

1. Subprogramul sumdiv primește prin parametrii a și b două numere naturale cu cel mult 4 cifre fiecare și
returnează suma tuturor divizorilor naturali ai numerelor a și b. Dacă un număr d este divizor atât pentru
a cât și pentru b, va fi adunat de două ori la sumă. De exemplu, pentru a=4 și b=6 funcția sumdiv(4,6) va
returna valoarea 19 (19=1+2+4+1+3+3+6).
a. Scrieți numai antetul subprogramului sumadiv.
b. Scrieți programul C++ care citește două numere naturale a și b, a≤b, cu cel mult 4 cifre fiecare și,
folosind apeluri utile ale subprogramului sumdiv, afișează toate numerele prime din intervalul
[a,b].

2. Realizați următoarele cerințe utilizând limbajul C++:


a. Scrieți definiția completă a unui subprogram sub cu doi parametri care primește prin intermediul
parametrilor a și b două numere naturale de cel mult 8 cifre fiecare, elimină cifra unităților
numărului a mutând cifra la sfârșitul numărului b și returnează cele două numere astfel
modificate tot prin parametri a și b. De exemplu dacă a=1234 și b=56, în urma apelul sub(a, b)
variabila a va avea valoare 123 iar b va avea valoarea 564
b. Scrieți un program C++, care citește un număr natural n, de cel mult 8 cifre și care folosind apeluri
utile ale funcției sub determină dacă numărul n este palindrom. Programul va afișa pe ecran
mesajul DA, dacă n este palindrom respectiv NU în caz contrar.

3. Realizați următoarele cerințe utilizând limbajul C++:


a. Scrieți definiția completă a unui subprogram cu numele produs, care va avea un singur parametru
x, număr natural nenul cu cel mult 8 cifre. Subprogramul determină și returnează produsul
divizorilor primi ai valorii parametrului x. De exemplu pentru x=300 funcția va returna valoarea
30, deoarece a=22*3*52 și 2*3*5=30.
b. Scrieți un program care citește trei numere naturale a, b, c, nenule, de cel mult 8 cifre fiecare, și
în care folosind funcția de la punctul a, verifică dacă cele trei numere au aceiași factori primi în
descompunerea lor în factori primi. Dacă cele trei numere au aceiași factori primi(exponenții lor
putând să difere) atunci va afișa pe ecran mesajul DA, în caz contrar mesajul NU. De exemplu
dacă a=300, b=1500 și c=30 se va afișa mesajul DA, iar pentru numerele a = 300, b=700 și c=40
se va afișa mesajul NU.

4. Subprogramul permutare primește printr-un parametru k un număr natural mai mic decât 10, print-un
parametru n un număr natural de cel mult 9 cifre și returnează, prin același parametru n, numărul
obținut prin permutarea circulară spre stânga, cu k poziții, a cifrelor numărului n. Scrieți definiția
completă a subprogramului permutare. De exemplu dacă k=3 și n=1234567, după apelul funcției
permutare(k, n) valoarea lui n devine 4567123.

5. Se consideră subprogramul cifra, cu 3 parametri, care primește prin intermediul parametrului nr un


număr natural, cu ce mult 9 cifre. Funcția returnează prin intermediul parametrilor max și ap, cifra cea
mai mare care apare în numărul nr, respectiv numărul de poziții pe are aceasta se află în numărul nr.

a. Scrieți definiția completă a subprogramului cifra.


b. Scrieți un program C++ care citește de la tastatură un număr natural a cu cel mult 9 cifre și
folosind în mod adecvat funcția scrisă la punctul anterior, afișează pe ecran mesajul DA, dacă
numărul conține cifra 9 de cel puțin două ori sau NU în caz contrar.