Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar
BACALAUREAT 2008 - INFORMATIC, limbajul C/C++ Subiectul II Specializarea Matematic-informatic intensiv informatic Subiectul II (30 de puncte) - Varianta 018
Pentru fiecare dintre itemii urmtori, scriei pe foaia de examen litera care corespunde rspunsului corect. 1. Fiecare element al unei liste circulare, nevide, alocat dinamic, memoreaz n cmpul val o valoare ntreag, iar n cmpul adr adresa elementului urmtor. tiind c variabila p reine adresa unui element oarecare din list, iar variabila q este de acelai tip cu p, precizai care dintre urmtoarele variante tiprete toate elementele listei? (4p.) a. q=p; while(q!=p) {cout<<q->val; q=q->adr;} q=p; while(q!=p) {printf(%d,q->val); q=q->adr;} b. q=p; while(q->adr!=p){cout<<q->val; q=q->adr;} q=p; while(q->adr!=p){printf(%d,q->val); q=q->adr;} c. q=p; do{ cout<<q->val; q=q->adr; }while(q!=p); q=p; do{ printf(%d,q->val); q=q->adr; }while(q!=p); d. q=p->adr; while(q!=p) {cout<<q->val; q=q->adr;} q=p->adr; while(q!=p) {printf(%d,q->val); q=q->adr;} 2. Care dintre urmtoarele variante reprezint o declarare corect pentru o variabil x care memoreaz simultan coordonatele reale (abscisa i ordonata) ale unui punct n planul xOy? (4p.) a. struct punct{float ox,oy;} x; b. char x[2]; c. struct x{float ox,oy;}; d. float x;
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare. 3. Un arbore binar este un arbore cu rdcin n care fiecare nod are cel mult 2 descendeni direci (fii). nlimea unui arbore este reprezentat de numrul maxim de muchii ale unui lan elementar ce unete rdcina cu un vrf terminal (frunz). Pentru un arbore binar cu exact 8 noduri, care este nlimea minim posibil i care este numrul de noduri terminale (frunze) n acest caz? (6p.) 4. In secvena alturat, variabila a memoreaz un ir cu cel mult 100 de caractere, iar variabila i este de tip ntreg. Completai punctele de suspensie din secven astfel nct aceasta s afieze irul de caractere *nf*rm*t*c*. (6p.) strcpy(a,informatica); for(i=0;i<strlen(a);i++) if(...) cout<<...; | printf(...); else cout<<...; | printf(...); Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<20), construiete n memorie i afieaz pe ecran o matrice cu n linii i n coloane, numerotate de la 1 la n. Fiecare element din matrice aflat pe o linie impar va fi egal cu numrul liniei pe care se afl i fiecare element aflat pe o linie par va fi egal cu numrul coloanei pe care se afl. 5. Elementele matricei vor fi afiate pe ecran, cte o linie a matricei pe cte o linie a ecranului cu cte un spaiu ntre elementele fiecrei linii. Exemplu: pentru n=5 se va afia matricea alturat. (10p.) 1 1 1 1 1 1 2 3 4 5 3 3 3 3 3 1 2 3 4 5 5 5 5 5 5