Documente Academic
Documente Profesional
Documente Cultură
Proba E. d)
Informatică
Limbajul C/C++
Varianta 6
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv informatică
Filieră vocațională, profil militar, specializare matematică-informatică
• Toate subiectele sunt obligatorii. Se acordă zece puncte din oficiu.
• Timpul de lucru efectiv este de trei ore.
• Identificatorii utilizați în rezolvări trebuie să respecte precizările din enunț (bold), iar în lipsa unor
precizări explicite, notațiile trebuie să corespundă cu semnificațiile asociate acestora (eventual în
formă prescurtată). Datele de intrare se consideră corecte, validarea lor nefiind necesară.
• În grafurile din cerințe oricare arc/muchie are extremități distincte și oricare două arce/muchii diferă
prin cel puțin una dintre extremități.
SUBIECTUL I____________________________________________________________________(20 de puncte)
Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare răspunsului
corect. Fiecare răspuns corect se notează cu 4 puncte.
1. Variabilele întregi m și n memorează câte un număr natural. Indicați expresia C/C++ care are valoarea 1
dacă și numai dacă fiecare dintre numerele memorate în variabilele m și n este par.
a. (m+n)%2==0 b. (m-n)%2==0 c. m%2+n%2==0 d. m%2-n%2==0
2. Subprogramul f este definit alăturat. Indicați int f(int n,int k)
valoarea f(35, 3). { if(n==0 || k==0) return 0;
return n%k+10*f(n/k,k);
}
a. 1022 b. 355 c. 102 d. 33
3. Variabila p, declarată alăturat, memorează dimensiunile unui paralelipiped struct paralelipiped
dreptunghic: lungimea, lățimea, respectiv înălțimea. { float l ,lt,h;
g
}
p;
Volumul paralelipipedului este egal cu produsul celor trei dimensiuni ale sale. Indicați o instrucțiune prin care i
se atribuie variabilei reale v valoarea volumului paralelipipedului corespunzător variabilei p.
a. v=lg*lt*h; b. v=lg.p*lt.p*h.p; c. v=p(lg*lt*h); d. v=p.lg*p.lt*p.h;
4. Utilizând metoda bactracking se generează toate șirurile de 5 litere distincte din mulțimea {A, M, U, R, G},
astfel încât în fiecare șir litera R precede literele A și M. Primele cinci soluții generate sunt, în această ordine:
URAMG, URAGM, URMAG, URMGA, URGAM. Indicați soluția generată imediat după GURMA.
3. Intervalul [x, y] se numește p-interval pentru un șir de valori întregi, dacă oricare dintre primii p termeni ai
șirului aparține intervalului, iar numărul de valori întregi distincte din interval este minim. Exemplu: pentru șirul
2, 7, -1, 8, 3, 10 există [2,2] ca 1-interval, [-1,8] ca 4-interval și 5-interval etc. Fișierul bac.in
conține un șir de cel mult 106 numere întregi din intervalul [-109,109], separate prin câte un spațiu.
Se cere să se afișeze pe ecran cea mai mică și cea mai mare valoare a lui p (p>2) cu proprietatea că (p-
1)-interval este identic cu p-interval pentru șirul aflat în fișier. Valorile afișate pot fi egale, iar dacă nu există
nicio astfel de valoare, pe ecran se afișează mesajul nu exista. Proiectați un algoritm eficient din punctul
de vedere al timpului de executare și al memoriei utilizate.
Exemplu: dacă fișierul conține numerele 2 7 1 8 3 10 6 -3 -2 13, se afișează pe ecran 5 9
(intervale conform cerinței se obțin pentru valorile 5, 7 și 9 ale lui p),
iar dacă fișierul conține numerele 2 7 1 0 8 10 -3 13, se afișează pe ecran nu exista
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.)