Sunteți pe pagina 1din 4

1.

Subprogramul sub, cu trei parametri, primete prin intermediul parametrului: v un tablou unidimensional cu cel mult 100 de componente ce memoreaz numere ntregi cu cel mult 4 cifre n un numr natural nenul mai mic sau egal cu 100 ce reprezint numrul efectiv de componente ale tabloului primit prin intermediul parametrului v a un numr ntreg cu cel mult 4 cifre Subprogramul sub returneaz numrul componentelor tabloului primit prin intermediul parametrului v ale cror valori sunt strict mai mici dect 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. a) Scriei definiia complet a subprogramului sub. (4p.) b) S se scrie un program C/C++ care s citeasc de la tastatur un numr natural nenul n (n100 i n numere ntregi, fiecare avnd cel mult 4 cifre, i care, folosind apeluri utile ale subprogramului sub, s afieze pe ecran mesa!ul DA dac oricare dou numere dintre cele n numere ntregi citite sunt distincte dou cte dou, sau mesa!ul ! n caz contrar. Exemplu" pentru n=# i cele n numere citite de la tastatur: 4$ 1%3 #9 % 134 &5# se va afia pe ecran mesa!ul DA 2. "n numr n se numete extraprim dac att el ct i orice numr obinut prin permutarea cifrelor lui n sunt numere prime. #e e$emplu, numrul 113 este un numr extraprim deoarece 113, 311, 131 sunt numere prime. a) Scriei definiia complet a unui subprogram ', cu un parametru, subprogram care: % primete prin intermediul parametrului a un numr natural cu cel mult 3 cifre (a(1 % returneaz suma e$ponenilor divizorilor primi 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. (4p.) b) Scriei un programul C/C++ care citete de la tastatur un numr natural n, 2n999, i care determin i afieaz pe ecran, folosind apeluri utile ale subprogramului ', mesa!ul DA dac n este un numr extraprim, altfel va afia mesa!ul !. 3. Subprogramul *+', cu doi parametri, primete prin intermediul parametrului a un numr natural cu cel mult % cifre i prin intermediul parametrului b o cifr& subprogramul returneaz numrul de apariii ale cifrei b n scrierea numrului a. Exemplu: pentru a=125%54 i b=5, subprogramul va returna valoarea 2. a) Scriei definiia complet a subprogramului *+'. (4p.) b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu exa*, % cifre i care determin i afieaz pe ecran, folosind apeluri utile ale subprogramului *+', cel mai mare numr palindrom ce poate fi obinut prin rearan!area tuturor cifrelor numrului n. #ac nu se poate obine un palindrom din toate cifrele numrului n, programul va afia pe ecran numrul 0. "n numr natural este palindrom dac este egal cu numrul obinut prin scrierea cifrelor sale n ordine invers. Exemplu" dac n=21523531 atunci se va afia pe ecran numrul 53211235, iar dac n=122$2351 atunci se va afia pe ecran numrul 0. 4. Subprogramul *+', cu doi parametri, primete prin intermediul parametrului a un numr natural cu cel mult % cifre i prin intermediul parametrului b o cifr& subprogramul returneaz numrul de apariii ale cifrei b n scrierea numrului a. Exemplu: pentru a=125%54 i b=5, subprogramul va returna valoarea 2. a) Scriei definiia complet a subprogramului *+'. (4p.) b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu exa*, % cifre, fiecare cifr fiind nenul, i care determin i afieaz pe ecran, folosind apeluri utile ale subprogramului *+', cel mai mic numr palindrom ce poate fi obinut prin rearan!area tuturor cifrelor numrului n. #ac nu se poate obine un palindrom din toate cifrele numrului n, programul va afia pe ecran numrul 0. "n numr natural este palindrom dac este egal cu numrul obinut prin scrierea cifrelor sale n ordine invers. Exemplu" dac n=21523531 atunci se va afia pe ecran numrul 12355321, iar dac n=122$2351 atunci se va afia pe ecran numrul 0. 5.Subprogramul ', cu un parametru: % primete prin intermediul parametrului a un numr natural cu cel mult % cifre (a(1 % 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 su este 3. a) Scriei definiia complet a subprogramului '. (4p.) b) Scriei un program C/C++ care s citeasc de la tastatur un numr natural nenul n (n100 i apoi un ir de n numere naturale de cel mult % cifre fiecare, toate numerele din ir fiind strict mai mari dect 1. 'olosind apeluri utile ale subprogramului ', programul va determina i va afia pe ecran toate numerele prime din irul citit. (umerele determinate se vor afia pe o singur linie a ecranului, separate prin cte un spaiu, n ordine cresctoare a valorii lor. #ac nu e$ist astfel de numere se va afia pe ecran mesa!ul ! E-./0A.

Exemplu" pentru n=$, irul: 1125, 2, 314, 101, 3$, 225, 12 pe ecran se va afia: 2 3$ 101 #. Se consider fiierul 1AC.0-0 ce conine un ir *2es*3,42 cu cel mult un milion de numere naturale de cel mult nou cifre fiecare, separate prin cte un spaiu. a) S se scrie un program C/C++ care, folosind un algoritm eficient din punct de vedere al memoriei utilizate i al timpului de e$ecutare, citete din fiier toi termenii irului i afieaz pe ecran, pe o singur linie, fiecare termen distinct al irului urmat de numrul de apariii ale acestuia n ir. )alorile afiate sunt separate prin cte un spaiu. Exemplu" dac fiierul 1AC.0-0 are urmtorul coninut: 1 1 1 5 5 5 5 9 9 11 20 20 20 programul va afia: 1 3 5 4 9 2 11 1 20 3 deoarece 1 apare de 3 ori, 5 apare de 4 ori, etc. b) #escriei succint, n limba! natural, metoda de rezolvare folosit, e$plicnd n ce const eficiena ei

$. Se consider irul definit de relaia de recuren alturat a) Scriei definiia complet a unui subprogram sub care primete prin intermediul singurului su parametru n un numr natural de ma$imum % cifre i care returneaz cel mai mare termen al irului ' care este mai mic sau cel mult egal cu n. Exemplu" dac n=%3 atunci subprogramul va returna valoarea %0. b) Scriei un program C/C++ care citete de la tastatur un numr natural s (s10000000) i determin scrierea lui s ca sum de termeni distinci ai irului dat folosind apeluri utile ale subprogramului sub. (umerele astfel determinate se vor scrie pe ecran, pe aceeai linie separate prin cte un spaiu. i Exemplu" dac valoarea citit de la tastatur este #3, se va afia: 40 20 3 (#p.)ce const %. Se consider dou tablouri unidimensionale a i b fiecare avnd numere naturale de ma$imum patru cifre, 4254na,e *2es*3,42. *abloul a conine n (16n6100 numere pare, iar tabloul b conine m (16m6100 numere impare. a) Scriei un program C/C++ care citete de la tastatur valoarea lui n i cele n elemente ale tabloului a, apoi valoarea lui m i cele m elemente ale tabloului b dup care scrie n fiierul 1AC.0-0 un numr ma$im de elemente ale tablourilor date, numerele fiiind scrise n ordine cresctoare, separate prin cte un spaiu, iar cele aflate pe poziii consecutive fiind de paritate diferit. +rogramul va utiliza un algoritm eficient din punct de vedere al timpului de e$ecutare. Exemplu: pentru n=#, m=5 i tablourile a=(2,4,%,10,14,1#) i b=(3,5,$,11,15 ) fiierul 1AC.0-0 va avea urmtorul coninut : 2 3 4 5 % 11 14 15 1# b) #escriei succint, n limba! natural, algoritmul pe baza cruia a fost scris programul de la punctul a), e$plicnd n ce const eficiena metodei utilizate. 9. Se consider fiierul 1AC.0-0 ce conine cel mult un milion de numere naturale separate prin spatii, fiecare numr avnd cel mult nou cifre. a) Scriei un program C/C++ care citete toate numerele din fiierul 1AC.0-0 i determin, folosind un algoritm eficient din punct de vedere timpului de e$ecutare, cele mai mari dou numere de trei cifre care nu se afl n fiier. #ac fiierul conine toate numerele de cte trei cifre atunci programul va afia pe ecran valoarea 0. Exemplu" dac fiierul 1AC.0-0 conine numerele: 12 2345 123 #$ 9%9 # 999 123 #$ 9%9 999 atunci programul va afia 99% 99$ b) #escriei succint, n limba! natural, metoda de rezolvare folosit, e$plicnd n ce const eficiena ei 10. ,videna produselor vndute de o societate comercial este pstrat n fiierul 789D!/E.0-0. +entru fiecare produs se cunoate tipul produsului (un numr natural de cel mult 4 cifre , cantitatea e$primat in -ilograme (un numr natural mai mic sau egal cu 100 i preul unui -ilogram (un numr natural mai mic sau egal cu 100 . +rodusele de acelai tip pot fi vndute n casntiti diferite, fiecare vnzare fiind nregistrat separat. 'iierul 789D!/E.0-0 are cel mult 200000 de linii i fiecare linie conine trei numere naturale, separate prin cte un spaiu, ce reprezint, n aceast ordine tipul, cantitatea i preul de vnzare al unui produs la un moment dat. a) S se scrie un program C/C++, care utiliznd un algoritm eficient din punct de vedere al timpului de e$ecutare, determin pentru fiecare tip de produs vndut suma total obinut n urma vnzrilor. +rogramul va afia pe cte o linie a ecranului tipul produsului i suma total obinut, separate prin cte un spaiu, ca n e$emplu. Exemplu: dac fiierul 789D!/E.0-0 are coninutul alturat, programul va afia numerele urmtoare: 1 150 2 30 35 315 1 20 5 2 10 3 1 10 5

b) #escriei succint, n limba! natural, metoda de rezolvare folosit, e$plicnd n ce const eficiena 11. a) Scriei doar antetul funciei sum care primete ca parametru un numr natural x cu ma$imum 9 cifre i returneaz suma divizorilor numrului x. Exemplu" sum(#) are valoarea 12 (=1+2+3+# . b) S se scrie un program C/C++ care citete de la tastatur un numr natural nenul n i apoi n de numere naturale cu ma$im 9 cifre fiecare. +rogramul calculeaz, folosind apeluri ale funciei sum, i afieaz pe ecran cte numere prime conine irul citit. Exemplu" pentru n=5 i valorile 12 3 9 $ 1 se va afia pe ecran valoarea 2 (n irul dat e$ist dou numere prime i anume 3 i $ . 12. Scriei un program C/C++ care citete de la tastatur o valoare natural nenul n (n20 , apoi un ir de n numere naturale, avnd fiecare e$act 5 cifre, i determin i afieaz pe ecran cte dintre cele n numere citite au toate cifrele egale. Exemplu" pentru n=5 i numerele 33333 12423 59%24 11111 33443 se va afia valoarea . (e$ist dou numere cu toate cifrele egale i anume 33333 i 11111 . 13. +e prima linie a fiierului te$t 1AC.. se gsesc, separate prin cte un spaiu, mai multe numere naturale de cel mult 9 cifre fiecare. Scriei un program C/C++ care citete numerele din acest fiier, elimin toate cifrele impare din fiecare dintre aceste numere i apoi scrie n fiierul te$t 1AC.9!0 numerele astfel obinute. #ac un numr din fiierul 1AC.. conine doar cifre impare i cifra 0, acesta nu va mai aprea deloc n fiierul de ieire. Exemplu" dac fiierul 1AC.. conine numerele 25 $ 3% 1030 4512$ 0 35 #0 15 atunci 1AC.9!0 va avea coninutul: 2 % 42 #0. 14. /n fiierul te$t 1AC.. se gsesc, pe o singur linie, separate prin cte un spaiu, mai multe numere naturale de cel mult # cifre fiecare. Se cere s se determine i s se afieze pe ecran, separate printr%un spaiu, ultimele 54u3 numere prime (nu neaprat distincte din fiierul 1AC.. . #ac n fiier se gsete un singur numr prim sau niciun numr prim se va scrie pe ecran mesa!ul ume2e p2+me +nsu'+*+en,e. Exemplu" dac fiierul 1AC.. conine valorile" 12 5 #% 13 % 1$ 9 31 42 se va afia 1$ 31. a) #escriei n limba! natural un algoritm eficient, din punct de vedere al spaiului de memorie i al timpului de e$ecutare, pentru rezolvarea acestei probleme, e$plicnd n ce const eficiena acestuia. b) Scriei programul C/C++ corespunztor algoritmului descris. 15. /n fiierul nume2e.,x, sunt memorate ma$imum 10000 de numere naturale cu cel mult 9 cifre fiecare. 'iecare linie a fiierului conine cte un numr. Se cere afiarea pe ecran, n ordine descresctoare, a tuturor cifrelor care apar n numerele din fiier. 0legei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de e$ecuie. Exemplu: dac fiierul nume2e.,x, conine: 2#$ 39#2% $9 se va tipri 99%$$##322. a) #escriei succinct, n limba! natural, strategia de rezolvare i !ustificai eficiena algoritmului ales. b) Scriei programul C/C++ corespunztor algoritmului ales.

1#. /n fiierul nume2e.,x, pe prima linie este memorat un numr natural n (n110000 , iar pe linia urmtoare un ir de n numere naturale distincte dou cte dou, separate prin cte un spaiu, cu ma$imum 4 cifre fiecare. Se cere afiarea pe ecran a poziiei pe care s%ar gsi primul element din irul aflat pe linia a doua a fiierului, n cazul n care irul ar fi ordonat cresctor. (umerotarea poziiilor elementelor n cadrul irului este de la 1 la n. 0legei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de e$ecuie. Exemplu" dac fiierul nume2e.,x, conine: # 2#$ 13 45 #2% $ $9 se va afia 5, deoarece primul element din irul iniial, 2#$, s%ar gsi pe poziia a cincea n irul ordonat cresctor. a) #escriei succint, n limba! natural, strategia de rezolvare i !ustificai eficiena algoritmului ales. b) Scriei programul C/C++ corespunztor algoritmului ales.
1%. /n fiierul nume2e.,x, este memorat un ir de ma$imum 10000 numere naturale, distincte dou cte dou, cu ma$imum 4 cifre fiecare, separate prin cte un spaiu. +entru un numr : citit de la tastatur, se cere afiarea pe ecran a poziiei pe care se va gsi acesta n irul de numere din fiier, dac irul ar fi ordonat descresctor, sau mesa!ul nu ex+s,3, dac numrul : nu se

afl printre numerele din fiier. 0legei un algoritm eficient de rezolvare din punct de vedere al memoriei utilizate i al timpului de e$ecuie. Exemplu: dac fiierul nume2e.,x, conine numerele 2# 2 5 30 13 45 #2 $ $9, iar : are valoarea 13, se va afia # deoarece 13 s%ar gsi pe poziia a asea n irul ordonat descresctor. a) #escriei succinct, n limba! natural, strategia de rezolvare i !ustificai eficiena algoritmului ales. b) Scriei programul C/C++ corespunztor algoritmului ales.

19. /n fiecare dintre fiierele n21.,x, i n22.,x, este memorat pe prima linie cte o valoare natural n de cel mult % cifre, iar pe linia urmtoare sunt memorate cte n numere naturale, cu ma$imum 4 cifre fiecare, ordonate strict cresctor i separate prin cte un spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict cresctoare, a tuturor numerelor aflate pe a a doua linie n cel puin unul dintre cele dou fiiere. /n cazul n care un numr apare n ambele fiiere, el va fi afiat o singur dat. 0legei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de e$ecuie. Exemplu: pentru urmtoarele fiiere: n21.,x, n22.,x, 5# 3 # % 9 12 2 3 5 $ 9 13 se va afia 2 3 5 # $ % 9 12 13. a) #escriei succinct, n limba! natural, strategia de rezolvare i !ustificai eficiena algoritmului ales. b) Scriei programul C/C++ corespunztor algoritmului ales. 20. /n fiecare dintre fiierele n21.,x, i n22.,x, este memorat pe prima linie cte o valoare natural n de cel mult % cifre, iar pe linia urmtoare sunt memorate cte n numere naturale, cu ma$imum 4 cifre fiecare, ordonate strict cresctor i separate prin cte un spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict cresctoare, a tuturor numerelor aflate pe a a doua linie att n primul ct i n al doilea fiier. 0legei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de e$ecuie. Exemplu" pentru urmtoarele fiiere: n21.,x, n22.,x, 5 # 3 # % 9 12 2 3 5 $ 9 13 se va afia 3 9. a) #escriei succinct, n limba! natural, strategia de rezolvare i !ustificai eficiena algoritmului ales. b) Scriei programul C/C++ corespunztor algoritmului ales. 21.'iierul 1AC.0-0 conine pe prima linie dou numere naturale n i : separat de un spaiu (31n110000, 21:1n/2 , iar pe a doua linie un ir de n numere naturale x1, x2, ..., xn separate prin cte un spaiu, fiecare numr din acest ir avnd cel mult patru cifre. a) Scriei un program C/C++ care citete numerele din fiier i determin, utiliznd o metod eficient din punct de vedere al timpului de e$ecutare, cel mai mic indice + (11+1n:+ 1 pentru care media aritmetic a numerelor x+, x++1, ..., x++:&1 este ma$im. +rogramul afieaz valoarea lui + pe ecran. Exemplu: pentru fiierul alturat se afieaz 2, deoarece media ma$im se obine pentru 9, 4, $. $3 294$529 b) ,$plicai succint, n limba! natural, metoda utilizat la punctul a, !ustificnd eficiena acesteia. 22. Scriei programul C/C++ care citete din fiierul 1AC.0-0 numrul ntreg n (11n110000 i un ir de n perec2i de numere ntregi a b (11a1b132000 , fiecare perec2e fiind scris pe o linie nou a fiierului, cu un spaiu ntre cele dou numere. +rogramul afieaz pe ecran pentru fiecare perec2e a,b cel mai mare numr natural din intervalul nc2is ;a,b<care este o putere a lui 2 sau numrul 0 dac nu e$ist nicio putere a lui 2 n intervalul respectiv. Exemplu" dac fiierul 1AC.0-0 conine numerele 3 2 #9 10 20 19 25 se va afia: #4 1# 0.