Sunteți pe pagina 1din 1

TESTARE TIP BAC XIIA – Tablouri unidimensionale

Sub.I (20p.) Scrieți pe foaia de test litera corespunzătoare variantei corecte de răspuns sau răspunsul corect. Pentru
fiecare răspuns corect veți primi 4p.
1. Fie declarația int v[50];
Specificați valoarea elementelot tabloului după execuția instrucțiunilor următoare:
for (i=1; i<=5; i++) v[i]=2 * ( i - 1 );
2. Ce veți pune în locul spațiilor punctate astfel încât la sfârșitul execuției vectorul v să conțină primii m multipli ai
numărului n. Valorile variabilelor m și n sunt cunoscute. Rescrieți integral secvența pe foaia de test.
for (int i=1; i<= ...; i++) v[i]=…;
3. Ce veți pune în locul spațiilor punctate astfel încât la sfârșitul execuției vectorul v să conțină divizorii numărului n,
dat. Rescrieți integral secvența pe foaia de test.
int k=0;
for (int i=1; i<= ...; i++)
if ( ... ) { ... ; v[…]=i; }
4. În vederea sortării crescătoare a unui șir de valori întregi, folosind metoda bulelor (bubblesort), un program citește
valorile următoare 2,40,17,1,51,34,20,63 și le memorează într-un tablou unidimensional. După câte parcurgeri ale
șirului, valoarea 40 ajunge pe locul final în tabloul unidimensional sortat crescător?
a) 0 b) 1 c) 2 d) 3 e) 4 f) 5
5. Pentru a verifica dacă într-un tablou unidimensional având elementele (3, 4, 7, 10, 12, 17, 18, 20, 46) există elementul
cu valoarea x=17, se aplică metoda căutării binare. Ştiind că numerotarea elementelor, în tablou, se realizează începând
cu poziţia 0, care este numărul minim de elemente ale tabloului care trebuie verificate pentru a găsi elementul căutat?
a) 6 b) 2 c) 9 d)5 e) 3 f) 1

Sub.II (60p.) Scrieți rezolvări complete pentru următoarele cerinţe


1. Scrieți o funcție C++ care primește un vector v cu n elemente numere naturale (n<100) și verifică dacă elementele
sale sunt distincte (oricare două sunt diferite). Subprogramul va returna 1 dacă vectorul trimis verifică proprietatea
cerută și 0 în caz contrar. (10p.)

2. Scrieţi câte o funcție C++ care pentru un tablou unidimensional a cu n elemente numere întregi:
a) (10p.) inserează înainte și după poziţia fiecărui element egal cu maximul din vector căte un element nul.
Exemplu: Pentru n=7 şi vectorul (2,4,5,2,5,5,3) vectorul modificat va fi: (2,4,0,5,0,2,0,5,0,0,5,0,3)
b) (10p.) elimină cât mai puţine elemente de la extremităţile vectorului astfel încât cel două valori rămase la “capete”
să fie numere consecutive.
Exemplu: Pentru n=9 şi vectorul (8,2,4,5,2,5,3,4,6) se va afişa: (2,4,5,2,5,3) deoarece s-a eliminat primul element şi
ultimele două. Valorile rămase la capete sunt consecutive.

3. (10p.) Se citeşte de la tastatură,. Scrieţi un subprogram care primește 2 numere naturale n și k (0 < n, k ≤ 100) şi
un tablou unidimensional a cu n elemente, numere întregi cu cel mult 4 cifre. Funcția returnează cea mai mare sumă
care se poate obține luând k elemente consecutive din vector.
Exemplu: dacă n=4 și k=3 iar tabloul are elementele a=(1,7,-3,4) subprogramul va returna valoarea 8.

4. Din fișierul date.txt se citește un șir de numere naturale având cel mult 9 cifre fiecare. Afişaţi toate cifrele distincte
care apar în numerele citite , în ordine crescătoare a numărului lor de apariţii. Cifrele cu același număr de apariții vor fi
scrise în ordine crescătoare. (10p.)
Exemplu : Pentru numerele 217 22 3 se va afişa 1 3 7 2
5. Se numește vârf într-un șir de numere naturale un termen al șirului care este strict mai mare decât fiecare dintre cei
doi termeni vecini cu el, aflați în șir pe poziția din stânga, respectiv din dreapta sa. Fișierul bac.in conține un șir de cel
mult 106 numere naturale din intervalul [0, 109], separate prin câte un spațiu. Se cere să se afișeze pe ecran vârful din
șirul aflat în fișier pentru care valoarea absolută a diferenței dintre cei doi vecini ai săi este minimă. Dacă există mai
multe astfel de numere, se afișează cel mai mare dintre ele, iar dacă nu există niciun vârf, se afișează pe ecran mesajul
nu exista. Proiectați un algoritm eficient din punctul de vedere al timpului de executare și al spațiului de memorie
utilizat.
Exemplu: dacă fișierul conține șirul 2 7 10 5 6 2 1 3 20 17 9 11 7 3 10 6 2 se afișează pe ecran 11
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

S-ar putea să vă placă și