Sunteți pe pagina 1din 3

SUBIECTUL I (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect. 1. n secvena de instruciuni alturat, variabilele x i y sunt de tip integer/int. Care este valoarea pe care trebuie s o aib iniial variabila x dac la finalul executrii secvenei s-a afiat un singur character asterisc (*)? (4p.) Varianta Pascal Varianta C++/C y:=x; y=x; while x<=3 do begin while(x<=3) write(*); { y:=y+1; cout<<"*"; | printf("*"); x:=x+y y=y+1; x=x+y;} end; a. 0 b. 2 c. 1 d. 4 Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare. 2. Se consider algoritmul alturat descris n s0 pseudocod. citete v (valoare natural) S-a notat cu x%y restul mpririi numrului natural ct timp v 0 execut x la numrul natural nenul y i cu [z] partea a v%10 ntreag a numrului real z. b [v/10]%10 a) Scriei ce valoare se va afia dac se citesc, n s s + a*10 + b ordine, urmtoarele valori : 114, 123, 517, 3312, citete v 14, 412, 22, 0. (6p.) b) Scriei ce valoare se va afia dac se citesc, n scrie s ordine, primele 99 de numere naturale nenule, urmate de 0 (adic 1,2,3,4,,98,99,0). (4p.) c) Scriei n pseudocod un algoritm echivalent cu cel dat, n care s se nlocuiasc structura ct timp...execut cu o structur repetitiv de un alt tip. (6p.) d) Scriei programul Pascal/ C/C++ corespunztor algoritmului dat. (10p.)

SUBIECTUL II (30 de puncte)


Pentru fiecare dintre itemii 1 i 2 scriei pe foaia de examen litera care corespunde rspunsului corect. Pentru intensiv 1. ntr-o list liniar simplu nlnuit, alocat dinamic, fiecare nod reine n cmpul adr adresa urmtorului nod din list sau NIL/NULL dac nu exist un nod urmtor, iar n cmpul info un numr ntreg. Considerm c o astfel de list memoreaz, n ordine, doar valorile 7, 5, 4, 9, 3. Variabila d reine adresa nodului la care este memorat valoarea 4. Care este secvena de instruciuni care trebuie executat pentru ca lista s conin, n ordine, doar valorile 7, 5, 9, 3? (4p.) Varianta Pascal Varianta C++/C
a. d^.adr:=d^.adr; b. d^.adr:=d^.adr^.adr; a. d->adr=d->adr; b. d->adr=d->adr->adr; d^.info:=d^.adr^.inf d->info=d->adr->info; o; c. d^.info:= d. d^.adr^.adr:=d^.adr; c.d->info=d->adrd. d->adr->adr=d->adr; dd^.adr^.info; d^.adr^.info:=d^.info; >info; >adr->info=d->info; d^.adr:=d^.adr^.adr; d->adr=d->adr->adr;

Pentru neintensiv

1. Se consider o coad, n care au fost introduse iniial, n aceast ordine, dou numere 2 i 1. Coninutul cozii este reprezentat n figura alturat. Notm cu AD X operaia prin care se adaug informaia X n coad i cu EL operaia prin care se elimin un element din coad. Asupra cozii se efectueaz, exact n aceast ordine, operaiile AD 5; EL; AD 4; EL; EL; AD 8; AD 9; EL. Care este coninutul cozii dup executarea operaiilor de mai sus? (4p.) a. 8 9 b. 8 c. 9 d. 4 8 9 2. Considerm c variabila s memoreaz irul de caractere examen. Care va fi valoarea lui s dup executarea instruciunilor scrise alturat? (4p.) Varianta Pascal s[1]:= E; s[length(s)]:= A; s[length(s)div 2]:= N; s[length(s) div 2+1]:= M; Varianta C++/C s[0]= E; s[strlen(s)-1]= A; s[strlen(s)/2-1]= N; s[strlen(s)/2]= M;

Pentru intensiv a. ExameN b. exAMen c. ExNMeA d. ExAMeN Pentru neintensiv a. ExNMeA b. exAMen c. ExAMeN d. ExameN Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare. 3. Se consider un graf neorientat cu 7 noduri, numerotate de la 1 la 7 i muchiile [1,5], [2,3], [2,4], [2,5], [3,4], [4,5], [4,7], [5,6], [5,7]. a) Cte cicluri elementare distincte exist n graf? Dou cicluri sunt distincte dac difer prin cel puin o muchie. (3p.) b) Care este lungimea maxim a unui ciclu elementar din acest graf? (3p.) c) Care este numrul minim de muchii care trebuie eliminate astfel nct graful parial obinut s aib 3 componente conexe? (6p.) 4. Se consider o matrice ptratic cu n linii i n coloane (1<=n<= 30), ce memoreaz numere ntregi nenule de cel mult dou cifre fiecare. Scriei un program C/C++ care citete de la tastatur valoarea n i elementele matricei i care afieaz pe ecran, ultima cifr a produsului acelor elemente de pe diagonala secundar ce au proprietatea c sunt valori minime pe coloanele lor. Dac nu exist astfel de elemente n matrice, se va afia mesajul NU EXISTA. Exemplu: pentru n=4 i matricea alturat se va afia pe ecran valoarea 1 (3*7=21). (10p.)

SUBIECTUL I
1. b 2. a) 249 b) 4950 c) s = 0 citeste v executa a=v%10 b=[v/10]%10 s=s+a*10+b daca v>0 atunci citeste v pana cand v=0 scrie s Varianta C/C++ #include<iostream.h> void main() {int s,a,b,v; s=0; cin>>v; while(v!=0) {a=v%10; b=v/10%10; s=s+a*10+b; cin>>v; } cout<<s;}

d) Varianta PASCAL
var s,v,a,b :integer; begin s:=0; write('v=');read(v); while v<>0 do begin a:= v mod 10; b:=(v div 10) mod 10; s:=s+a*10+b; write('v=');read(v); write('s=',s);end.

end;

SUBIECTUL II 1. c pentru varianta intensiv, respectiv a pentru neintensiv 2. c pentru varianta intensiv, respectiv a pentru neintensiv 3. a) 4 b) 5 (2-3-4-7-5-2) c)2(1,5 si 5,6) 4. Varianta PASCAL Varianta C/C++
type mat=array[1..10,1..10] of integer; var n,i,j,min,k :integer; p: longint; a:mat; begin write('n='); read(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']='); read (a[i,j]); end; p:=1;k:=0; for j:=1 to n do begin min:=a[1,i]; for i:=2 to n do if a[i,j]<min then min:=a[i,j]; if min=a[n+1-j,j] then begin p:=p*min; inc(k) end; end; if k >0 then write(p mod 10) else write(NU EXISTA); end. #include<iostream.h> void main() {int n, a[30][30],i,j,min,p=1,k=0; cout<<n=; cin>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) {cout<<a[<<i<<][<<j<<]=; cin>>a[i][j];} for(j=1;j<=n;j++) {min=a[1][j]; for(i=2;i<=n;i++) if(a[i][j]<min) min=a[i][j]; if (min == a[n+1-j][j]) {p=p*min;k++; } if (k) cout<<p %10; else cout<<NU EXISTA;}