Sunteți pe pagina 1din 5

Examenul de bacalaureat 2013-Informatică

SUBIECTUL I
1. a. 3;
2. a)

a b c s x y
19 23 2 0 19 19
19 23 2 1 20 20
19 23 2 2 21 21
19 23 2 4 22 22
19 23 2 5 23 23

Finalizare: s=5;
b) a=1; c=1; s=12;
Finalizare: Numerele sunt: 19 si 20.
Algoritmul constă în identificarea numerelor din intervalul [a,b] care conțin cifra c. Spre
exemplu, dacă un număr conține de două ori „c”, contorul va crește cu 2, dacă numărul
conține o singură dată cifra „c” , contorul va crește cu 1 ș.a.m.
c) citeste a,b,c ( numere naturale, a≤b, 0≤c≤9)
s<-0
pentru x<-a,b executa
y<-x
repeta
daca y%10=c atunci
s<-s+1
y<-[y/10]
pana cand y==0
scrie s
d) #include <cstring> numere naturale= unsigned int;
using namespace std;
unsigned int a,b,c,x,y,s;
int main ( )
{ cin>>a>>b>>c;
s=0;
for(x=a;x<=b;x++)
{
y=x;
while(y>0)
{
if(y%10==c)
{s=s+1;
}
y=y/10;
}
}
cout<<s;
return 0;
}

SUBIECTUL AL II-LEA

1.b;
2.d; Graf complet= [n(n-1)]/2 muchii.
3. if(x.v%2==0)
x.paritate=”p”;
else
x.paritate=”i”;
4. 2 si 3
Matricea trebuie parcursă astfel
încat liniile să crească ,nu coloanele
după cum ne-am obișnuit.

Forma generală a parcurgerii era:

Linii...

{Coloane..

Astfel încat i rămâne constant până


când se termină contorul pt coloane.

În acest caz trebuie sa fie exact


5.
invers, pentru a putea compara
#include <iostream> toate valorile de pe coloane.

Am realizat un for până la n pentru


că acesta reprezintă numărul pentru
using namespace std; coloane și un for până la m pentru că
acesta reprezintă numărul pentru
int a[51][51],m,n,nr,ok,numar,i,j;
linii. Astfel, coloana va rămâne
int main() constantă până când se va termina
contorul liniei.
{cin>>m>>n;
Verificăm de fiecare dată dacă
for(i=1;i<=m;i++) elementul curent al coloanei de pe
linia x este egal cu elementul de jos
for(j=1;j<=n;j++)
al coloanei de pe linia x+1.
cin>>a[i][j]; Contorizăm, iar dacă numărul este
egal cu m-1 (deoarece verificăm
for(i=1;i<=n;i++) egalitate 2 câte 2) ,atunci toate
elementele de pe coloană sunt
{for(j=1;j<m;j++)
egale.
if(a[j][i]==a[j+1][i])
După fiecare coloană egală,
nr++; inițializăm ok=1 și nr=0 pentru a
verifica în continuare dacă mai există
if(nr==m-1) coloane.
{ok=1; cout<<a[j][i]<<" "; nr=0;} Dacă programul s-a sfârșit și ok va
rămâne 0, nu vor exista coloane
else
egale.
ok=0;
}

if(ok==0)
cout<<"Nu exista"<<" ";
return 0;

}
SUBIECTUL AL III-LEA
1. return 2*f2(2,3)=8;
return 2*f2(2,1)=4;
c;
2. A=1; M=2;
MAAAM=21112
MAAMM=21122
MAMAM=21212
MAMMM=21222
MMAAM =22112
MMAMM =22122
3.
#include <iostream>
Având un număr n dat, noi trebuie sa afișăm
using namespace std; toate numerele 2*n cu anumite proprietăți
int nr,v[101],n,i,ap,v1[101]; precizate: numerele impare în ordine crescătoare ,
void valuri(int n,int v1[101]) numerele pare în ordine descrescătoare și pe
poziții consecutive să nu existe numere de aceeași
{
paritate.
for(i=1; i<=2*n; i++)
Pentru a evita interclasarea, care este un
{if(i%2==1) algoritm destul de complex verificăm paritatea
v[++nr]=i; indicelui:
else if(i%2==0) 1) Dacă i este impar, îl afișăm;
{ 2) Dacă i este par, din n-ul nostru scădem un
v[++nr]=2*n-ap; număr n care va crește din 2 în 2.
ap=ap+2;
i=1 => Afișăm 1.
}
} i=2 => Afișăm n=8-0=8 si nr va crește nr=2.
} i=3 => Afișăm 3.
int main()
{ i=4 => Afișăm n=8-2=6.
cin>>n; i=5 => Afișăm 5.
valuri(n,v);
i=6 => Afișăm n=8-4=4.
for(i=1; i<=nr; i++)
i=7 => Afișăm 7.
cout<<v[i]<<" ";
i=8 => Afișăm n=8-6=2.
return 0;
} Se va afișa: 1 8 3 6 5 4 7 2.
4. a)
x=15 => 15 8 7 4 3 2 1 Avem un număr x.

#include <iostream> Din acest număr x trebuie sa obținem


using namespace std; șirul: 15 8 7 4 3 2 1.
int x; Observăm că 8 s-a obținut din jumătatea
int main() lui 15+1.
{
cin>>x; Observăm că 7 s-a obținut din 8-1.
while(x) Observăm că 4 s-a obținut din jumătatea
{ lui 7 +1.
if(x==1)
Observăm că 3 s-a obținut din 4-1.
{
cout << 1 <<" "; ș.a.m
break; Deci, dacă n este impar, următorul
} număr îl obținem din număr/2+1 și dacă
else n este impar, următorul număr îl
{ obținem din număr-1.
cout<<x<<" ";
if(x%2==1)
x=x/2+1;
else
x=x-1;
}

}
return 0;
}

b) Algoritmul utilizat este eficient din punct de vedere al memoriei utilizate și al timpului de
executare întrucât se folosește doar o variabilă în care se memorează numărul citit de la
tastatură; din acesta se formează succesiv după afișare, alt număr în funcție de paritate,
efectuând aceeași metodă până când n devine 1 și programul se va opri. De asemenea,
algoritmul este eficient dpv al timpului de executare deoarece este liniar și de tipul O(n).

Subiect:
https://www.pbinfo.ro/resurse/9dc152/examene/2013/E_d_Informatica_C_sp_MI_var_02_LRO.p
df

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