Sunteți pe pagina 1din 10

VARIANTA 4 - SUBIECTUL 1 (30p)

Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.

1. Considerând o variabilă x de tip real, indicaţi expresia care are valoarea true/1 dacă şi numai dacă x∈[1,5]∪[7,9]. (4p.)

Limbajul Pascal Limbajul C/C++

a. ((x>=1) or (x<=9)) and ((x<=5) or (x>=7)) (x>=1 || x<=9) && (x<=5 || x>=7)

b. not((x>0) and (x<7)) and (x>=1) !(x>5 && x<7) && x>=1

c. (x>=1) and (x<=5) and (x>=7) and (x<=9) x>=1 && x<=5 && x>=7 && x<=9

d. not((x<1) or ((x>5) and (x<7)) or (x>9)) !(x<1 || (x>5 && x<7) || x>9)

2. Se consideră algoritmul următor reprezentat în pseudocod:


S-a notat cu x%y restul împărţirii numărului natural x la numărul natural nenul y, iar cu [x] partea întreagă a numărului real x.

a) Ce valoare va fi afişată dacă se citesc valorile 7 şi 13? (6p.)


b) Pentru a=10, scrieţi cea mai mare valoare care poate fi introdusă pentru b astfel încât rezultatul afişat să fie 4. (4p.)

c) Scrieţi în pseudocod un algoritm, echivalent cu cel dat, în care să se înlocuiască structura pentru j<-2,[i/2] execută... cu o structură
repetitivă de alt tip. (6p.)

d) Scrieţi programul Pascal/C/C++ corespunzător algoritmului dat. (10p.)

VARIANTA 4 - SUBIECTUL 2 (30p)

Pentru itemii 1 şi 2, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.

1. Fie G un graf neorientat complet cu 10 vârfuri. Numărul maxim de muchii care pot fi eliminate din G astfel încât acesta să rămână
conex este: (4p.)

a. 9 b. 32 c. 36 d. 40

2. Se consideră tipul de date Data, capabil să memoreze o dată calendaristică şi tipul de date Elev, capabil să memoreze numele,
data nașterii și media anuală a unui elev. Care dintre următoarele expresii are valoare true/1 dacă şi numai dacă elevul ale cărui
date sunt memorate în variabila e de tipul Elev este născut în anul 2000? (4p.)

Limbajul Pascal Limbajul C/C++

a. e^.data_nasterii^.an = 2000 e->data_nasterii->an == 2000


b. e.data_nasterii.an = 2000 e.data_nasterii.an == 2000

c. e.an = 2000 e.an == 2000

d. data_nasterii.an = 2000 data_nasterii.an == 2000

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.

3. Se consideră un graf neorientat G cu 6 noduri etichetate cu numerele de la 1 la 6, graf dat prin listele de adiacenţă de mai jos:
1: 2 6
2: 1 3
3: 2 4 5 6
4: 3 5
5: 3 4
6: 1 3
Verificați dacă graful G este eulerian și, în caz afirmativ, scrieți un ciclu eulerian din vârful 1. (6p.)

4. Se consideră două şiruri de caractere s şi t declarate prin:


Pascal: var s,t:string[30];
C/C++: char s[31],t[31];
Ştiind că ambele șiruri sunt formate numai din litere mici ale alfabetului englez, scrieţi doar instrucţiunea sau instrucţiunile care
afişează pe ecran mesajul DA în cazul în care șirul s este un prefix al șirului t sau mesajul NU în caz contrar. (6p.)

5. Să se construiască o matrice cu n linii şi n coloane care conţine pe prima linie numerele naturale de la 1 la n în ordine crescătoare,
pe a doua linie numerele naturale de la n+1 la 2n în ordine descrescătoare, pe a treia linie numerele naturale de la 2n+1 la 3n în
ordine crescătoare, pe a patra linie numerele naturale de la 3n+1 la 4n în ordine descrescătoare şi aşa mai departe până la linia n.
Scrieţi programul care citeşte de la tastatură o valoare naturală n (2<=n<=50), construieşte matricea conform cerinţei şi o afişează
pe ecran, pe linii, cu spaţii între elementele de pe fiecare linie.
De exemplu, dacă se citeşte de la tastatură n=5, se va construi şi se va afişa matricea:
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
(10p.)

VARIANTA 4 - SUBIECTUL 3 (30p)

Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.

1. Utilizând metoda backtracking se generează, în ordinea crescătoare a valorii, toate numerele formate din exact n cifre nenule
distincte şi având suma cifrelor egală cu s. Astfel, pentru n=2 și s=10, se obţin, în ordine,
numerele: 19,28,37,46,64,73,82,91. Folosind aceeaşi metodă, se generează numerele formate din n=4 cifre distincte și
având suma cifrelor s=25.
Care va fi al treisprezecelea număr generat?
(4p.)

a. 3598 b. 2986 c. 3589 d. 3679

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.

2. Funcţia f are definiţia următoare:

Limbajul Pascal Limbajul C/C++

a) Scrieţi valoarea care se obţine în urma apelului f(24,2). (3p.)


b) Scrieţi cea mai mare valoare de 3 cifre pe care o poate avea o variabilă x, astfel încât pentru apelul f(x,2) să se obţină valoarea 0. (3p.)
3. Scrieţi definiţia completă a subprogramului cifre, cu doi parametri, care primeşte prin intermediul parametrului a un număr
natural format din maxim 9 cifre și furnizează prin al doilea parametru b numărul obţinut prin eliminarea cifrelor lui a aflate pe
poziții pare. Cifrele numărului a se numerotează de la dreapta spre stânga, începând cu poziția 0 (corespunzătoare cifrei
unităților).
Exemplu: pentru a=2334157, valoarea returnată prin b va fi 345. (10p.)

4. Fişierul text bac.in conţine, pe prima linie, cel mult 1000000 de numere naturale nenule, fiecare fiind format din cel mult 9cifre.
Oricare două numere consecutive sunt despărțite printr-un spațiu.
a) Scrieţi un program care, folosind un algoritm eficient din punct de vedere al timpului de executare şi al spaţiului de memorie
utilizat, determină şi scrie în fișierul bac.out cel mai mare număr natural care se poate obține din cifrele tuturor numerelor din
fișierul bac.in. (8p.)
Exemplu: dacă fişierul bac.in conţine numerele 2117 90 885 515 37, atunci fișierul bac.out trebuie să conţină
numărul 98877555321110.
b) Descrieţi în limbaj natural metoda utilizată şi explicaţi în ce constă eficienţa ei. (2p.)

VARIANTA 5 - SUBIECTUL 1 (30p)

Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.

1. Fie n o variabilă de tip întreg care conține un număr natural format din exact 3 cifre. Indicaţi expresia care are valoarea true/1 dacă şi numai
dacă prima cifră a numărului n este egală cu ultima. (4p.)

Limbajul Pascal Limbajul C/C++

a. n div 10 = n mod 100 n/10==n%100

b. n mod 10 = n div 100 n%10==n/100

c. n div 10 = n div 100 n/10==n/100


d. n mod 10 = n mod 100 n%10==n%100

2. Se consideră algoritmul următor reprezentat în pseudocod:


S-a notat cu x%y restul împărţirii numărului natural x la numărul natural nenul y, iar cu [x] partea întreagă a numărului real x.

a) Ce valoare va fi afişată dacă se citesc valorile 201 şi 208? (6p.)

b) Pentru a=818, scrieţi cea mai mare valoare care poate fi introdusă pentru b astfel încât rezultatul afişat să fie 7. (4p.)

c) Scrieţi în pseudocod un algoritm, echivalent cu cel dat, în care să se înlocuiască structura pentru...execută cu o structură repetitivă
de alt tip. (6p.)

d) Scrieţi programul Pascal/C/C++ corespunzător algoritmului dat. (10p.)

VARIANTA 5 - SUBIECTUL 2 (30p)


Pentru itemii 1 şi 2, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.

1. Un graf orientat are 8 vârfuri, numerotate de la 1 la 8, și arcele: (1,2), (2,3), (2,6), (6,1), (6,5), (3,6), (4,5), (3,2), (5,4) și (3,4).
Numărul vârfurilor care au gradul intern egal cu gradul extern este: (4p.)

a. 4 b. 1 c. 2 d. 3

2. Se consideră tipul de date Punct2D, capabil să memoreze coordonatele unui punct în plan, şi tipul de date Punct3D, capabil să
memoreze coordonatele unui punct în spațiu. Care dintre următoarele secvențe de instrucțiuni poate fi folosită pentru a inițializa toate
coordonatele punctului q cu valoarea 0? (4p.)

Limbajul Pascal Limbajul C/C++


type Punct2D=record struct Punct2D
x,y:real; {
end; double x,y;
};
type Elev=record
p:Punct2D; struct Punct3D
z:real; {
end; Punct2D p;
var q:Punct3D; double z;
};
Punct3D q;
a. q.x:=0;q.y:=0;q.z:=0; q.x=q.y=q.z=0;

b. q.p:=0;q.z:=0; q.p=q.z=0;

c. q.p.x:=0;q.p.y:=0;q.z:=0; q.p.x=q.p.y=q.z=0;

d. q.p.x:=0;q.p.y:=0;q.p.z:=0; q.p.x=q.p.y=q.p.z=0;

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.

3. Se consideră un arbore cu rădăcină având 8 noduri, etichetate cu numerele de la 1 la 8, dat prin următorul vector de tați:
(5,3,8,8,0,1,5,5). Scrieți nodurile din arborele cu rădăcină dat care sunt frunze. (6p.)
4. Considerăm următoarea secvență de program:

Limbajul Pascal Limbajul C/C++

var s:string[20]; char s[20];


................... ...................
s:='examene'; strcpy(s,"examene");
s:=s+copy(s,3,3); strncat(s,s+2,3);
s:=copy(s,5,20); strcpy(s,s+4);
writeln(length(s)); cout<<strlen(s);

Scrieţi ce se va afișa pe ecran în urma executării secvenței de instrucțiuni de mai sus. (6p.)

5. Scrieţi un program care citeşte de la tastatură un număr natural n (3≤n≤50) şi elementele unui tablou bidimensional cu n linii
şi ncoloane, numere naturale cu cel mult patru cifre, apoi modifică tabloul în memorie, eliminând elementele aflate pe diagonala
principală, ca în exemplu. Programul trebuie să afişeze pe ecran tabloul obținut, fiecare linie a tabloului pe câte o linie a ecranului,
elementele de pe aceeași linie fiind separate prin câte un spațiu.
Exemplu: pentru n=4 şi tabloul
7 5 3 4
8 1 5 6
4 6 3 5
0 9 9 6
programul trebuie să afişeze pe ecran tabloul de mai jos:
5 3 4
8 5 6
4 6 5
0 9 9
(10p.)

VARIANTA 5 - SUBIECTUL 3 (30p)

Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.

1. Utilizând metoda backtracking se generează, în ordinea crescătoare a valorii, toate numerele formate din exact n cifre aflate în ordine
strict crescătoare şi având prima cifră cel puțin egală cu c. Astfel, pentru n=3 și c=5, se obţin, în ordine,
numerele: 567, 568, 569, 578, 579, 589, 678, 679, 689 și 789. Folosind aceeaşi metodă, se generează numerele formate
din n=5 cifre aflate în ordine strict crescătoare și având prima cifră cel puțin egală cu c=3.
Care va fi al zecelea număr generat? (4p.)

a. 34789 b. 35678 c. 34689 d. 35789

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.

2. Funcţia f are definiţia următoare:

Limbajul Pascal Limbajul C/C++

a) Scrieţi valoarea care se obţine în urma apelului f(100100,1). (3p.)


b) Scrieţi cea mai mare valoare formată din 7 cifre pe care o poate avea o variabilă n, astfel încât pentru apelul f(n,7) să se obţină valoarea 2. (3p.)

3. Scrieţi definiţia completă a subprogramului divp, cu 3 parametri, care primeşte prin intermediul parametrului a un număr natural cuprins
între 2 și 1000000000 și furnizează prin al doilea parametru b cel mai mic divizor propriu al numărului a, iar prin cel de-al treilea
parametru c furnizează cel mai mare divizor propriu al numărului a. Un divizor propriu al unui număr natural nenul n este un divizor al
său diferit de 1 și n. Dacă numărul n nu are nici un divizor propriu, atunci parametrii b și c trebuie să fie furnizeze amândoi valoarea 0.
Dacă numărul n are un singur divizor propriu d, atunci parametrii b și c trebuie să fie furnizeze amândoi valoarea lui d.
Exemplu: pentru a=2334157, valoarea returnată prin b va fi 345. (10p.)

4. Fişierul text bac.in conţine, pe prima linie, cel mult 1000000 de numere naturale nenule, fiecare fiind format din cel mult 9 cifre.
Oricare două numere consecutive sunt despărțite printr-un spațiu.
a) Scrieţi un program care, folosind un algoritm eficient din punct de vedere al timpului de executare şi al spaţiului de memorie utilizat,
determină şi scrie în fișierul bac.out cel mai mic număr natural care se poate obține din cifrele tuturor numerelor din
fișierul bac.in. (8p.)
Exemplu: dacă fişierul bac.in conţine numerele 2117 90 885 515 37, atunci fișierul bac.out trebuie să conţină
numărul 10112355577889.
b) Descrieţi în limbaj natural metoda utilizată şi explicaţi în ce constă eficienţa ei. (2p.)

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