Sunteți pe pagina 1din 3

Subiectul 1 (20p)

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. Știind că variabilele a și b memorează numere naturale cu a≤b.
Stabiliți care dintre expresiile Pascal/C/C++ următoare indică numărul de numere
pare din intervalul [a,b]:
Limbajul Pascal Limbajul C/C++
a. (b-a)div 2 (b-a)/2
b. (b-a)div 2+1 (b-a)/2+1
c. (b-a)div 2–(a mod 2)*(b mod 2) (b-a)/2-(a%2)*(b%2)
d. (b-a)div 2+1-(a mpd 2)*(b mod 2) (b-a)/2+1-(a%2)*(b%2)

2. Pentru subprogramul f cu definiția următoare, indicați valoarea care se va afișa în


urma apelului f(12345).
Limbajul Pascal Limbajul C/C++
procedure f( x:integer); void f(int x)
begin {
if x<>0 then if(x!=0) if(x
if x mod 2=0 then begin %2==0) {
write(x mod 10); cout<<x%10;
f(x div 10); f(x/10);
write(x mod 1 end cout<<x%10; }
else begin f(x div 10); else
write(x mod 10) end; { f(x/10); cout<<x%10;}
end; }
a. 54423231 b. 45432321 c. 4212345 d. 5432124
3. Utilizând metoda backtracking se generează toate submulțimile nevide ale mulțimii
{1,2,3,4}, Primele cinci submulțimi generate sunt, în această ordine: {1}, {1,2},
{1,2,3}, {1,2,3,4}, {1,2,4}. Indicați care este cea de a 8-a submulțime generată:
a. {1,3} b. {1,3,4} c. {1,4} d. {2,3,4}
4. Se consideră arborele cu 10 noduri, numerotate de la 1 la 10 dat prin următorul
vector "de taţi": (0,1,2,3,1,5,5,7,5,9). Stabiliți numărul nodurilor care au
exact 3 ascendenti.
a.0 b. 2 c. 3 d. 4
1:2;
5. Care este numărul subgrafurilor complete ale grafului neorientat
2:1,3,4;
cu 5 noduri numerotate de la 1 la 5, dat prin listele de
3:2,4,5;
adiacență alăturate?
4:2,3,5;
5:3,4;
a. 0 b. 2 c. 8 d. 13

176
Subiectul 2 (40p)

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


1. Se consideră algoritmul alăturat
reprezentat în pseudocod:
S-a notat cu x%y restul împărţirii
numărului întreg x la numărul întreg
nenul y şi cu [a] partea întreagă a
numărului real a.

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


b) Știind că pentru variabila b s-a citit valoarea 89, scrieţi care este numărul numerelor
cu patru cifre distincte, ce pot fi citite pentru variabila a astfel încât, pentru fiecare
astfel de valoare, sa fie divizibil cu 50. (6p.)

c) Scrieţi în pseudocod un algoritm, echivalent cu cel dat, în care să se înlocuiască


structura cât timp...execută cu o structură repetitivă de alt tip. (6p.)

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

2. Se consideră declarările următoare în care câmpurile x și y ale înregistrării pot memora


numere naturale ce reprezintă, în ordine, extremitatea inițială, respectiv extremitatea finală,
a unui arc dintr-un graf orientat. Scrieţi o expresie în limbajul Pascal|C/C++ care să aibă
valoarea true/1 dacă şi numai dacă arcele distincte a1 și a2 sunt incidente. (6p.)
Limbajul Pascal Limbajul C/C++
type arc=record struct arc {
x,y:integer int x,y;
end; };
var a1,a2: arc; arc a1, a2;

3. În secvenţa următoare, variabilele i şi j sunt de tip integer int, iar variabila M


memorează o matrice cu 5 linii şi 5 coloane (numerotate de la 1 la 5) cu elemente de tip
integer/int. Scrieți care este cea mai mare valoare nemorată în matrice, la finalul
executării secvenței, și care sunt coordonatele elementului din matrice (linia și coloana) ce
memorează această valoare (6p)
Limbajul Pascal Limbajul C/C++
x:=0; x=0;
for i:= 1 to 5 do for(i=1;i<=5;i++)
for j:= 1 to 5 do begin for(j=1;j<=5;j++) {
if i mod 2 <> j mod 2 if ( i%2 != j%2 )
then x:=x+2 x=x+2;
else dec(x); else x--;
M[i,j]:=x M[i][j]=x;
end }

177
Subiectul 3 (30p)

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

1. Subprogramul MinMax primește prin intermediul parametrului v, un tablou


unidimensional cu maximum 100 de numere reale. Subprogramul mută, la începutul
tabloului, toate aparițiile celui mai mic număr din tablou și, la sfârșitul tabloului, toate
aparițiile celui mai mare număr din tablou, fără a modifica ordinea celorlalte elemente din
tablou.
Scrieți definiția completă a subprogramului MinMax. (10p)
Exemplu. Pentru valorile n=10, v=(5, 8, 2, 9, 2, 7, 9, 4, 2, 8), subprogramul MinMax va
furniza prin parametrul v tabloul: (2, 2, 2, 5, 8, 7, 4, 8, 9, 9). (10p.)
2. Un șir de maximum 255 caractere conține cuvinte scrise cu litere mici. Oricare două
cuvinte alăturate sunt separate printr-un spațiu. Scrieți programul Pascal|C/C++ care
citește un astfel de șir și înlocuiește fiecare cuvânt ce conține cel puțin trei litere cu un nou
cuvânt format cu prima și ultima literă a cuvântului. Șirul astfel obținut se afișează pe
ecran.
De exemplu, pentru șirul: am vazut o raza de soare
se afișează pe ecran noul șir: am vt o ra de se (10p.)
3. Numim secvență liniară o secvență de numere întregi a1.a2,a3,...,an cu proprietatea
că ai+1 – ai = i, (Ɐ) 1≤i≤n-1
Fişierul text numere.in conţine un şir s de cel mult un milion de numere naturale nenule,
formate fiecare din cel mult 4 cifre, separate prin câte un spaţiu.
a) Scrieţi un program Pascal | C/C++ care, utilizând un algoritm eficient din punct de vedere
al timpului de executare şi al spaţiului de memorie utilizat, determină și afișează pe ecran cea
mai lungă secvenţă liniară din şir. Elementele secvenței liniare se afișează separate prin câte
un spațiu. Dacă există mai multe secvențe liniare de lungime maximă, se afișează una din
ele. Exemplu: dacă fişierul numere.in are conţinutul:
4 6 8 9 11 14 5 7 9 10 12 15 19 4 2
atunci, pe ecran se va afişa secvența liniară: 9 10 12 15 19 . (8p.)
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