[Bacalaureat la INFORMATICA Atestat la Informatica ]

La adresa infoatestat.blogspot.ro  gasiti variante de subiecte si rezolvari pt bac .
Pentru toate variantele la bac avem adresa
http://atestatbac.weebly.com/ atestate si bac subiecte si rezolvari
 Dar si metodologia pt atestat si mai multe proiecte , unele integrale , altele partiale dar cu indicatii pentru finalizare .
Postarea aceasta va viza BAC-ul la info .
 Aici incepem cu strategia de rezolvare pentru varianta numarul 1 si vom analiza toate cele 3 subiecte .
Mai intai subiectele :


Există la Serviciul National de Evaluare un set de variante pt bac la info .Cum nu sunt modificări majore de la un an la altul subiectele sunt cam aceleași de vreo 9 ani .
Postez variantele , fiecare variantă are însă trei subiecte , apoi rezolvări așa cum le găsiți pe net  si apoi sper minim 10 variante rezolvate cu accent pe fiece detaliu
Ministerul Educaţiei, Cercetării şi Tineretului – Centrul Naţional pentru Curriculum şi Evaluare în
Învăţământul Preuniversitar
INFORMATICĂ, limbajul C/C++

 Varianta I

 Subiectul I
Specializarea Matematică-informatică
EXAMENUL DE BACALAUREAT – 2008
Proba scrisă la INFORMATICĂ
PROBA E, limbajul C/C++
Specializarea Matematică-informatică
♦ Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.
♦ Timpul efectiv de lucru este de 3 ore.
♦ În rezolvările cerute, identificatorii utilizaţi 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ă).
Subiectul I (30 de puncte)
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Variabila x este de tip real. Care dintre următoarele expresii C/C++ are valoarea 1 dacă şi
numai dacă numărul real memorat în variabila x aparţine intervalului (5,8]? (4p.)
a. (x<8) && (x>=5) b. (x<=8) || (x>5)
c. (x>8) || (x<=5) d. (x<=8) && (x>5)
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră algoritmul alăturat, descris î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) Scrieţi valoarea care se va afişa dacă se citeşte
n=103456. (6p.)
b) Scrieţi toate numere naturale impare, distincte, fiecare
având exact două cifre, care pot fi citite pentru variabila
n astfel încât să se afişeze valoarea 3. (4p.)
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.)
citeşte n (număr natural)
z=0
p=1
┌cât timp n>0 execută
│ c=n%10
│ n=[n/10]
│┌dacă c%3=0 atunci
││ z=z+p*(9-c)
││ p=p*10
│└■
└■
scrie z
d) Scrieţi programul C/C++ corespunzător algoritmului dat. (6p)

Subiectul II (30 de puncte)
Pentru fiecare dintre itemii 1 şi 2 scrieţi pe foaia de examen litera care corespunde
răspunsului corect.
1. Se consideră o coadă în care iniţial au fost introduse, în această ordine, elementele cu
valorile 1 şi 2:
1 2 . Se notează cu AD(x) operaţia prin care se adaugă elementul cu
valoarea x în coadă şi cu EL operaţia prin care se elimină un element din coadă. Câte
elemente va conţine coada în urma executării secvenţei de operaţii:
AD(4);EL;EL;AD(5);EL;AD(3)? (4p.)
a. 3 b. 1 c. 2 d. 5
2. Care este numărul maxim de componente conexe pe care le poate avea un graf neorientat
cu 20 noduri şi 12 muchii? (4p.)
a. 6 b. 12 c. 10 d. 15
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
3. În declararea alăturată, câmpurile x şi y ale înregistrării pot
memora coordonatele carteziene ale unui punct din planul xOy.
Scrieţi o secvenţă de instrucţiuni prin executarea căreia se
calculează şi se afişează pe ecran distanţa dintre două puncte ale
căror coordonate sunt memorate de variabilele A şi B. (6p.)
struct punct
 {
 float x,y;
 } A,B;
float d;
4. Pentru arborele reprezentat prin vectorul “de taţi” T=(6,6,5,0,6,4,4,7), scrieţi care este
nodul cu cei mai mulţi fii şi care sunt frunzele arborelui. (6p.)
Scrieţi un program C/C++ care citeşte de la tastatură două numere naturale nenule n şi m
(2≤m≤10, 2≤n≤10) şi care construieşte în memorie şi apoi afişează o matrice A cu n linii
(numerotate de la 1 la n) şi m coloane (numerotate de la 1 la m) cu proprietatea că fiecare
element Aij memorează cea mai mică dintre valorile indicilor i şi j (1≤i≤n, 1≤j≤m).
Matricea se va afişa pe ecran, câte o linie a matricei pe câte o linie a ecranului, elementele
fiecărei linii fiind separate prin câte un spaţiu.
5.
Exemplu: pentru n=4 şi m=5 se va afişa matricea alăturată.
 (10p.)
 1 1 1 1 1
 1 2 2 2 2
 1 2 3 3 3
 1 2 3 4 4

Subiectul III (30 de puncte)
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Utilizând metoda backtracking se generează în ordine lexicografică cuvintele de câte patru
litere din mulţimea A={a,b,c,d}, cuvinte care nu conţin două vocale alăturate. Primele
trei cuvinte generate sunt, în ordine: abab, abac, abad. Care este cel de-al şaselea
cuvânt generat? (4p.)
a. abbb b. abbc c. abba d. abbd
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Pentru definiţia de mai jos a subprogramului f, ce se afişează ca urmare a apelului
f(121,1);? (6p.)
//C
void f(long n, int i)
{ if(n!=0) printf("%d",i);
 if(n%3>0) f(n/3,i+1);
}
//C++
void f(long n, int i)
{ if(n==0) cout<<i;
 if(n%3>0) f(n/3,i+1);
}
3. Fisierul text bac.txt conţine, pe o singură linie, cel mult 1000 de numere naturale nenule
cu cel mult 4 cifre fiecare, numerele fiind separate prin câte un spaţiu. Scrieţi un program
C/C++ care citeşte de la tastatură un număr natural nenul n (n≤999) şi numerele din fişierul
bac.txt şi care afişează pe ecran, separate prin câte un spaţiu, toate numerele din fişier
care sunt divizibile cu n. Dacă fişierul nu conţine niciun astfel de număr, atunci se va afişa
pe ecran mesajul NU EXISTA.
Exemplu: dacă fişierul bac.txt conţine numerele: 3 100 40 70 25 5 80 6 3798,
pentru n=10 atunci pe ecran se va afişa: 100 40 70 80 (10p.)
4. Subprogramul sub, cu trei parametri, primeşte prin intermediul parametrului:
– v un tablou unidimensional cu cel mult 100 de componente ce memorează numere
întregi cu cel mult 4 cifre
– n un număr natural nenul mai mic sau egal cu 100 ce reprezintă numărul efectiv de
componente ale tabloului primit prin intermediul parametrului v
– a un număr întreg cu cel mult 4 cifre
Subprogramul sub returnează numărul componentelor tabloului primit prin intermediul
parametrului v ale căror valori sunt egale cu valoarea parametrului a.
Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=21 ale parametrilor, în urma
apelului, subprogramului sub va returna valoarea 2.
a) Scrieţi definiţia completă a subprogramului sub. (4p.)
b) Scrieţi un program C/C++ care să citească de la tastatură un număr natural nenul n
(n≤100) şi n numere întregi, fiecare având cel mult 4 cifre, şi care, folosind apeluri utile ale
subprogramului sub, să afişeze pe ecran mesajul DA dacă oricare două numere dintre cele
n numere citite sunt distincte două câte două, sau mesajul NU în caz contrar.
Exemplu: pentru n=6 şi cele n numere citite de la tastatură: 47 183 69 8 134 -56
se va afişa pe ecran mesajul DA (6p.)


Acum urmează explicațiile :Pagina de rezolvari