Sunteți pe pagina 1din 1

19.

a) Scriei definitia subprogramului nrdiv, care primete prin intermediul parametrului x un numr natural nenul cu cel mult 4 cifre, i returneaz numrul de divizori primi ai lui x. b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n1000), iar pe a doua linie a fiierului se afl un ir format din n numere naturale nenule, desprite prin cte un spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care citete numerele din fiier i care afieaz pe ecran, folosind apeluri utile ale subprogramului nrdiv, pentru fiecare valoare din ir numrul de divizori primi. Numerele afiate vor fi separate prin cte un spaiu. Exemplu: dac fiierul bac.in are coninutul alturat, 6 30 105 140 10 20 5 pe ecran se va afia: 3 3 3 2 2 1 8. Se consider definite dou subprograme: - Subprogramul s1, cu 3 parametri, care primete prin intermediul parametrului a un tablou unidimensional cu exact 100 de elemente, numerotate de la 0 la 99, numere ntregi de cel mult 4 cifre fiecare, iar prin intermediul parametrilor p i q (0p<q<100) poziiile a dou elemente ale tabloului. Subprogramul furnizeaz prin intermediul parametrului p poziia primului element par (dac exist), i prin intermediul parametrului q poziia ultimului element impar (dac exist), din secvena ap,ap+1, ..., aq. Dac aceast secven nu conine niciun element par subprogramul va furniza prin intermediul lui p valoarea -1, iar dac nu conine niciun element impar, va furniza prin intermediul lui q valoarea -1. - Subprogramul s2, cu doi parametri, a i b, dou numere ntregi cu cel mult 4 cifre fiecare; subprogramul interschimb valorile a dou variabile transmise prin intermediul parametrilor a i b. a) Scriei definiia complet a subprogramelor s1 si s2. b) Scriei un program C/C++ care: -citete de la tastatur un numr natural nenul n (0n<100), apoi cele n elemente ale unui tablou a. Fiecare dintre aceste elemente este un numr ntreg cu cel mult 4 cifre i cel puin un element al tabloului este par; - determin plasarea la sfritul tabloului a a tuturor elementelor pare, folosind apeluri utile ale subprogramelor s1 i s2; - scrie elementele tabloului rezultat n urma acestei transformri pe o singur linie a fiierului text BAC.TXT, separate prin cte un spaiu. Exemplu: pentru n=5 i a=(2,4,3,5,7) fiierul va avea coninutul: 7 5 3 4 2. 5. Se consider definite urmtoarele subprograme: - s1, cu doi parametri: a, b dou numere ntregi cu cel mult 4 cifre fiecare; subprogramul interschimb valorile a dou variabile transmise prin intermediul parametrilor a i b. - s2, cu trei parametri: a, un tablou unidimensional cu exact 100 de elemente, numere ntregi cu cel mult 4 cifre fiecare, p, un numr natural (p100), q, un numr natural (q100). Subprogramul caut primul element divizibil cu 5 n secvena ap,ap+1, ..., aq, i returneaz poziia acestuia, dac exist un astfel de element, sau valoarea -1 n caz contrar. a) Scriei numai antetul subprogramului s1. b) Scriei definiia complet a subprogramului s2. c) Scriei programul C/C++ care citete de la tastatur o valoare natural n (0<n<100) i apoi un tablou unidimensional a, cu n elemente, numere ntregi cu cel mult 4 cifre fiecare. Programul determin, folosind apeluri utile ale subprogramului s2, primul element divizibil cu 5 (dac exist) i ultimul element divizibil cu 5 (dac exist) al tabloului a, interschimb valorile elementelor gsite, folosind apelul sub programului s1, i apoi scrie pe prima linie a fiierului text BAC.TXT elementele tabloului a, astfel transformat, separate prin cte un spaiu, sau valoarea 0 dac tabloul nu conine 2 elemente divizibile cu 5. Exemplu: pentru n=7 i tabloul a=(6,10,4,15,2,5,8), programul va scrie n fiier: 6 5 4 15 2 10 8