Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar
BACALAUREAT 2009 - INFORMATIC, limbajul C/C++ Subiectul III Specializarea Matematic-informatic intensiv informatic Subiectul III (30 de puncte) - Varianta 050
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect. 1. Valorile memorate de componentele tabloului v, cu indicii de la 0 la 5, sunt, n aceast ordine: 973, 51, 75, 350, 350, 15. Se consider subprogramul t cu definiia alturat. Care dintre urmtoarele expresii are valoarea 2 ? (4p.) int t (int i, int v[]) { if(i==0) return 0; if(v[i]!=v[i-1]) return t(i-1,v); return 1; } a. t(0,v)+t(3,v) b. t(1,v)+t(4,v) c. t(4,v)+t(5,v) d. t(3,v)+t(4,v)
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare. 2. Se genereaz n ordine strict cresctoare toate numerele de cte ase cifre care conin: cifra 1 o singur dat, cifra 2 de dou ori i cifra 3 de trei ori. Se obin, n aceast ordine, numerele: 122333, 123233, 123323, , 333221. Ce numr se afl imediat naintea i ce numr se afl imediat dup numrul 332312 n irul numerelor generate? (6p.) 3. Se consider subprogramul divxy care primete prin parametrii x i y dou valori ntregi pozitive (0<x<1000 i 0<y<1000) i returneaz valoarea 1 dac y este divizor al lui x sau x este divizor al lui y i returneaz valoarea 0 n caz contrar. a) Scriei definiia complet a subprogramului divxy. (4p.) b) Scriei un program C/C++ care citete de la tastatur trei numere naturale nenule a, b i n, cu cel mult 3 cifre fiecare i care afieaz pe ecran toi divizorii lui n din intervalul nchis determinat de a i b folosind apeluri utile ale subprogramului divxy. Intervalul nchis determinat de a i b este [a,b] dac a<b sau [b,a] dac ba. Numerele afiate sunt separate prin cte un spaiu. Dac nu exist niciun astfel de numr se afieaz mesajul NU EXISTA. Exemplu: pentru a=85, b=10 i n=40 se afieaz: 10 20 40 (nu neaprat n aceast ordine). (6p.) 4. Fiierul bac.in conine pe prima linie un numr natural n (0<n<5000), iar pe a doua linie, separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare. Scriei un program C/C++ care determin i scrie n fiierul bac.out, toate numerele, citite de pe a doua linie a fiierului bac.in, care apar de cel puin dou ori. Numerele determinate se vor scrie n ordine cresctoare, pe aceeai linie, separate prin cte un spaiu. Exemplu: dac fiierul bac.in conine pe prima linie numrul 11, iar pe linia a doua valorile 23 12 54 12 78 345 67 23 78 934 23 atunci fiierul bac.out va conine: 12 23 78 (10p.)