Exercitii functii


 * 1) Scrieţi definiţia completă a subprogramului sub cu doi parametri: n (număr natural, 0<n≤50) şi k (număr natural, 0<k≤20). Subprogramul determină afişarea pe o linie nouă a ecranului, în ordine descrescătoare, a primelor n numere naturale nenule divizibile cu k. Numerele vor fi separate prin câte spaţiu. Exemplu: dacă n=3  şi k=5 la apelul subprogramului se va afişa pe ecran: 15 10 52.
 * 2) Scrieţi definiţia completă a subprogramului sub cu trei parametri: n (număr natural, 5<n≤30000), a  şi b; subprogramul furnizează prin intermediul parametrilor a şi b cele mai mari două numere prime distincte mai mici decât  n. Exemplu: dacă n= 28 la apelul subprogramului se va furniza prin parametrul a valoarea 23 şi prin parametrul b valoarea 19.3.
 * 3) Scrieţi definiţia completă a subprogramului multiplu care are 3 parametri: a, prin care primeşte un tablou unidimensional  cu maximum 100 de numere naturale mai mici decât 1000, n, numărul efectiv de elemente ale tabloului şi k, un număr natural (k≤9). Subprogramul returnează numărul  de elemente din tablou care sunt multipli ai numărului k şi au ultima cifră egală cu k. Exemplu: dacă n=6, a=(9,273,63,83,93,123), iar k=3, subprogramul va returna valoarea 4.4.
 * 4) Scrieţi definiţia completă a subprogramului interval care are doi parametri a şi n, prin care primeşte un tablou unidimensional  cu maximum 100 de numere naturale mai mici decât 1000 şi respectiv numărul efectiv de elemente din tabloul unidimensional. Subprogramul returnează numărul  de elemente din tabloul unidimensional care aparţin intervalului închis determinat de primul şi respectiv ultimul element al tabloului.  Exemplu: dacă tabloul are 6 elemente şi este de forma (12,27,6,8,9,2), subprogramul va returna valoarea5.
 * 5) Scrieţi definiţia completă a subprogramului count care are doi parametri, a şi n, prin care primeşte un tablou unidimensional cu maximum 100 de numere reale şi respectiv numărul efectiv de elemente din tablou. Subprogramul returnează numărul de elemente din tabloul a care sunt mai mari sau cel puţin egale cu media aritmetică a tuturor elementelor din tablou. Exemplu: dacă tabloul are 6 elemente şi este de forma  (12, 7.5, 6.5, 3, 8.5, 7.5), subprogramul va returna valoarea 4 (deoarece media tuturor elementelor este 7.5 şi numerele subliniate sunt cel puţin egale cu această medie).6.
 * 6) Subprogramul aranjare are doi parametri: a prin care primeşte un tablou unidimensional  cu maximum 100 de numere reale nenule şi n, numărul de elemente din tablou. Subprogramul rearanjează elementele tabloului unidimensional astfel încât toate valorile negative să se afle pe primele poziţii, iar valorile pozitive în continuarea celor negative. Ordinea în cadrul secvenţei de elemente pozitive, respectiv în cadrul secvenţei de elemente negative, poate fi oricare. Tabloul modificat va fi furnizat tot prin intermediul parametrului a. Exemplu: dacă tabloul are 6 elemente şi este de forma  (12, -7.5, 6.5, -3, -8, 7.5), după apel, acesta ar putea fi: (-7.5, -3, -8, 12, 6.5, 7.5).  Scrieţi definiţia completă a subprogramului aranjare
 * 7) Subprogramul nule are doi parametri: a, prin care primeşte un tablou unidimensional  cu maximum 100 de numere întregi, cu cel mult 4 cifre fiecare şi n, numărul de elemente din tablou. Subprogramul rearanjează elementele tabloului unidimensional astfel încât toate valorile nule să se afle la sfârşitul tabloului. Ordinea în cadrul secvenţei de elemente nenule poate fi oricare. Tabloul modificat este furnizat tot prin parametrul a. Exemplu: dacă n=6, a=(12,0,0,-3,-8,0), după apel, acesta ar putea fi:  a=(12,-3,-8,0,0,0).  Scrieţi definiţia completă a subprogramului nule.8.
 * 8) Scrieţi definiţia completă a unui subprogram i_prim care primeşte prin singurul său parametru, n, un număr natural din intervalul [2,30000] şi returnează diferenţa minimă p2-p1 în care p1 şi p2 sunt numere prime şi p1≤n≤p2. Exemplu: dacă n=20 atunci i_prim(n)=4, valoare obţinută pentru p1=19 şi p2=23.Functii + Program1.
 * 9) Subprogramul sub, cu trei parametri, primeşte prin intermediul parametrilor: v un tablou unidimensional cu cel mult 100 de componente ce memorează numere întregi de cel mult 4 cifre fiecare, n un număr natural nenul mai mic sau egal cu 100 ce reprezintă numărul efectiv de componente ale tabloului primit prin intermediul parametrului v, a un număr întreg cu cel mult 4 cifre.Subprogramul sub returnează numărul componentelor tabloului primit prin intermediul parametrului v ale căror valori sunt strict mai mici decât valoarea parametrului a.Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=20 ale parametrilor, în urma apelului, subprogramului sub va returna valoarea 2. Scrieţi definiţia completă a subprogramului sub. Să se scrie un program C++ care să citească de la tastatură un număr natural nenul n (n≤100) şi n numere întregi, fiecare având cel mult 4 cifre, şi care, folosind apeluri utile ale subprogramului sub, să afişeze pe ecran mesajul DA dacă oricare două dintre cele n numere întregi citite sunt distincte două câte două, sau mesajul NU în caz contrar.Exemplu: pentru n=6 şi cele n numere citite de la tastatură: 47 183 69 8 134 -56 se va afişa pe ecran mesajul DA2.
 * 10) Un număr n se numeşte extraprim dacă atât el, cât şi orice număr obţinut prin permutarea cifrelor lui n, sunt numere prime. De exemplu, numărul 113 este un număr extraprim deoarece 113, 311, 131 sunt numere prime.a. Scrieţi definiţia completă a unui subprogram e_prim, cu un parametru, subprogram care primeşte prin intermediul parametrului a un număr natural cu cel mult 3 cifre (a>1) si returnează suma tuturor exponenţilor din descompunerea în factori primi a valorii parametrului a.Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*32*5 şi 1+2+1=4.b. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n, 2≤n≤999 şi, folosind apeluri utile ale subprogramului e_prim, verifică dacă n este un număr extraprim. În caz afirmativ, programul afişează pe ecran mesajul DA, în caz contrar afişând mesajul NU.3.
 * 11) Subprogramul cif, cu doi parametri, primeşte prin intermediul parametrului a un număr natural cu cel mult 8 cifre şi prin intermediul parametrului b o cifră; subprogramul returnează numărul de apariţii ale cifrei b în scrierea numărului a. Exemplu: pentru a=125854 şi b=5, subprogramul va returna valoarea 2.
 * 12) Scrieţi definiţia completă a subprogramului cif.Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n cu exact 8 cifre, fiecare cifră fiind nenulă, şi care determină şi afişează pe ecran, folosind apeluri utile ale subprogramului cif, cel mai mic număr palindrom ce poate fi obţinut prin rearanjarea tuturor cifrelor numărului n. Dacă nu se poate obţine un palindrom din toate cifrele numărului n, programul va afişa pe ecran numărul 0. Un număr natural este palindrom dacă este egal cu numărul obţinut prin scrierea cifrelor sale în ordine inversă.Exemplu: dacă n=21523531 atunci se va afişa pe ecran numărul 12355321, iar dacă n=12272351 atunci se va afişa pe ecran numărul 0.4.
 * 13) Subprogramul f, cu un parametru primeşte prin intermediul parametrului a un număr natural cu cel mult 8 cifre (a>1) si returnează cel mai mic divizor prim al valorii parametrului a.Exemplu: pentru valoarea 45 a parametrului a, subprogramul va returna valoarea 3 deoarece a=32*5, iar cel mai mic divizor prim al său este 3. Scrieţi definiţia completă a subprogramului f. Scrieţi un program C/C++ care să citească de la tastatură un număr natural nenul n (n≤100) şi apoi un şir de n numere naturale de cel mult 8 cifre fiecare, toate numerele din şir fiind strict mai mari decât 1. Folosind apeluri utile ale subprogramului f, programul va determina şi va afişa pe ecran toate numerele prime din şirul citit. Numerele determinate se vor afişa pe ecran, separate prin câte un spaţiu, în ordine crescătoare a valorii lor. Dacă nu există astfel de numere se va afişa pe ecran mesajul NU EXISTA.Exemplu: pentru n=7, şirul: 1125, 2, 314, 101, 37, 225, 12 pe ecran se va afişa: 2 37 1015.
 * 14) Subprogramul sub, cu trei parametri, primeşte prin intermediul parametrilor: v un tablou unidimensional cu cel mult 100 de componente, ce memorează numere întregi de cel mult 4 cifre fiecare, n, un număr natural nenul mai mic sau egal cu 100 ce reprezintă numărul efectiv de componente ale tabloului primit prin intermediul parametrului v, a, un număr întreg cu cel mult 4 cifre. Subprogramul sub returnează numărul componentelor tabloului primit prin intermediul parametrului v ale căror valori sunt strict mai mici decât valoarea parametrului a.  Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=20 ale parametrilor, în urma apelului, subprogramului sub va returna valoarea 2. Scrieţi definiţia completă a subprogramului sub.Să se scrie un program C++ care să citească de la tastatură un număr natural nenul n (n≤100) şi n numere întregi, fiecare având cel mult 4 cifre, şi care, folosind apeluri utile ale subprogramului sub, să afişeze pe ecran mesajul DA dacă oricare două dintre cele n numere întregi citite sunt distincte două câte două, sau mesajul NU în caz contrar. Exemplu: pentru n=6 şi cele n numere citite de la tastatură: 47 183 69 8 134 -56  se va afişa pe ecran mesajul DA6.
 * 15) Subprogramul cif, cu doi parametri, primeşte prin intermediul parametrului a un număr natural cu cel mult 8 cifre şi prin intermediul parametrului b o cifră; subprogramul returnează numărul de apariţii a e cifrei b în scrierea numărului  a. Exemplu: pentru a=125854 şi b=5, subprogramul va returna valoarea 2. Scrieţi definiţia completă a subprogramului cif.Scrieţi un program C++ care citeşte de la tastatură un număr natural n cu exact 8 cifre şi care determină şi afişează pe ecran, folosind apeluri utile ale subprogramului cif, cel mai mare număr palindrom ce poate fi obţinut prin rearanjarea tuturor cifrelor numărului n. Dacă nu se poate obţine un palindrom din toate cifrele numărului n, programul va afişa pe ecran numărul 0. Un număr natural este palindrom dacă este egal cu numărul obţinut prin scrierea cifrelor sale în ordine inversă. Exemplu: dacă n=21523531 atunci se va afişa pe ecran numărul 53211235, iar dacă  n=12272351 atunci se va afişa pe ecran numărul 0.
 * 16) Subprogramul f, cu un parametru primeşte prin intermediul parametrului a un număr natural cu cel mult 8 cifre (a>1) si returnează cel mai mic divizor prim al valorii parametrului a. Exemplu: pentru valoarea 45 a parametrului a, subprogramul va returna valoarea 3 deoarece a=32*5,  iar cel mai mic divizor prim al său este 3. Scrieţi definiţia completă a subprogramului f. Scrieţi un program C/C++ care să citească de la tastatură un număr natural nenul n(n≤100) şi apoi un şir de n numere naturale de cel mult 8 cifre fiecare, toate numerele din şir fiind strict mai mari decât 1. Folosind apeluri utile ale subprogramului f, programul va determina  şi va afişa pe ecran toate numerele prime din şirul citit. Numerele determinate se vor afişa pe ecran, separate prin câte un spaţiu, în ordine crescătoare a valorii lor. Dacă nu există astfel de numere se va afişa pe ecran  mesajul NU EXISTA. Exemplu:  pentru  n=7, şirul: 1125, 2, 314, 101, 37, 225, 12 pe ecran se va afişa:  2 37 1018.
 * 17) Scrieţi definitia funcţiei sum care primeşte ca parametru un număr natural nenul  x cu maximum 9 cifre şi returnează suma divizorilor numărului x.Exemplu: sum(6) are valoarea 12 (=1+2+3+6). (3p.)Să se scrie un program C/C++ care citeşte de la tastatură un număr natural n (0<n<25) şi apoi n numere naturale nenule cu maximum 9 cifre fiecare. Programul calculează, folosind apeluri ale funcţiei sum, şi afişează pe ecran câte numere prime conţine şirul citit. Exemplu: pentru n=5 şi valorile 12 3 9 7 1 se va afişa pe ecran valoarea 2 (în şirul dat există două numere prime şi anume 3 şi 7).9.
 * 18) Se consideră subprogramul P care are doi parametri: -  n, prin intermediul căruia primeşte un număr natural de cel mult 9 cifre-  c, prin intermediul căruia primeşte o cifră.  Subprogramul va furniza tot prin intermediul parametrului n numărul obţinut din n prin eliminarea tuturor apriţiilor cifrei c. Dacă, după eliminare, numărul nu mai conţine nicio cifră sau conţine doar cifre 0, rezultatul returnat va fi 0. Pe prima linie a fişierului text BAC.IN se găsesc, separate prin câte un spaţiu, mai multe numere naturale de cel mult 9 cifre fiecare. Scrieţi programul C/C++ care citeşte numerele din acest fişier, utilizând apeluri ale subprogramului P elimină toate cifrele impare din fiecare dintre aceste numere şi apoi scrie în fişierul text BAC.OUT numerele astfel obţinute, separate prin câte un spaţiu. Dacă un număr din fişierul BAC.IN nu conţine nicio cifră pară nenulă, acesta nu va mai apărea deloc în fişierul de ieşire. Exemplu: dacă fişierul BAC.IN conţine numerele 25 7 38 1030 45127 0 35 60 15, atunci BAC.OUT va avea conţinutul: 2 8 42 60. 10.
 * 19) Scrieţi definiţia completă a unui subprogram, nz, cu un parametru întreg n (0<n≤32000), care returnează numărul zerourilor de la sfârşitul numărului n!. Scrieţi programul  C/C++ care citește de la tastatură un număr natural k (0<k≤3) și determină, folosind apeluri ale subprogramului nz, cel mai mic număr natural n pentru care n! are cel puţin k zerouri la sfârşit. Numărul determinat se afișează pe ecran.