Sunteți pe pagina 1din 172

Coordonator – prof.

Giorgie Daniel VLAD, inspector de informatică

CULEGERE DE PROBLEME
PENTRU ATESTAT LA
INFORMATICĂ

Editura Cygnus

Suceava, 2013
Probleme pentru ATESTAT 2013

2
Probleme pentru ATESTAT 2013

Prefață

Stimați colegi, această lucrare își propune să vină în sprijinul dvs și a elevilor
pe care-i îndrumați pentru obținerea certificatului de atestat profesional la
informatică.

Cartea conține subiectele propuse pentru examenul de atestat, la programare,


Office și baze de date, subiecte ce au fost făcute publice în luna ianuarie a
acestui an.

Această culegere poate fi folosită la toate clasele de matematică – informatică


și științele naturii întrucât conține aplicații ce sintetizează noțiunile teoretice ce
sunt expuse la disciplina informatică pe parcursul anului școlar.

Responsabilitatea asupra redactării rezolvărilor, dar și a enunțurilor o au în


exclusivitate autorii precizați la fiecare subiect în parte.

În speranța că demersurile noastre vă sunt utile, vă urez un an nou cu sănătate


și împliniri.

Inspector, Girgie Daniel VLAD

3
Probleme pentru ATESTAT 2013

Autori :

PROGRAMARE

1. Daniela Marcu
2. Ovidiu Marcu
3. Cristinel Acatrinei – Vasiliu
4. Suzana Șestac
5. Mihaela Hatmanu
6. Liliana David
7. Marius Măgurean
8. Marius Ududec
9. Silvia Martinescu
10. Raluca Costineanu

BAZE DE DATE:
1. Coajă Gabriela
2. Lăzărescu Antoaneta
3. Strugar Ciprian
4. Popa Carmen
5. Ştefănescu Daniela Narcisa
6. Ududec Marius
7. Mocanu Corina
8. Măgurean Marius
9. Melniciuc Maria

OFFICE:
1. GavriloviciZînica
2. Ilciuc Cristina
3. Freitag Gabriela
4. Olar Aspazia
5. Petrovici Daniela
6. Ilincăi Florin
7. IldeghezMihaela
8. Foit Daniela
9. Acatrinei - Vasiliu Cristinel

4
Probleme pentru ATESTAT 2013

CUPRINS

PROGRAMARE ................................................................................................. 9
Problema 1....................................................................................................... 9
Problema 2..................................................................................................... 11
Problema 3..................................................................................................... 12
Problema 4..................................................................................................... 14
Problema 5..................................................................................................... 16
Problema 6..................................................................................................... 17
Problema 7..................................................................................................... 19
Problema 8..................................................................................................... 20
Problema 9..................................................................................................... 21
Problema 10................................................................................................... 23
Problema 11................................................................................................... 24
Problema 12................................................................................................... 25
Problema 13................................................................................................... 26
Problema 14................................................................................................... 28
Problema 15................................................................................................... 29
Problema 16................................................................................................... 30
Problema 17................................................................................................... 32
Problema 18................................................................................................... 34
Problema 19................................................................................................... 36
Problema 20................................................................................................... 38
Problema 21................................................................................................... 39
Problema 22................................................................................................... 41
Problema 23................................................................................................... 42
Problema 24................................................................................................... 43
Problema 25................................................................................................... 45
Problema 26................................................................................................... 47
Problema 27................................................................................................... 49
Problema 28................................................................................................... 50
5
Probleme pentru ATESTAT 2013

Problema 29 ................................................................................................... 51
Problema 30 ................................................................................................... 53
Problema 31 ................................................................................................... 54
Problema 32 ................................................................................................... 55
Problema 33 ................................................................................................... 57
Problema 34 ................................................................................................... 59
BAZE DE DATE ............................................................................................... 61
Subiect nr. 1 ................................................................................................... 61
Subiect nr.2 .................................................................................................... 63
Subiect nr. 3 ................................................................................................... 65
Subiect nr. 4 ................................................................................................... 68
Subiect nr. 5 ................................................................................................... 70
Subiect nr. 6 ................................................................................................... 72
Subiect nr.7 .................................................................................................... 74
Subiect nr.8 .................................................................................................... 77
Subiect nr. 9 ................................................................................................... 79
Subiect nr.10 .................................................................................................. 81
Subiect nr. 11 ................................................................................................. 84
Subiect nr. 12 ................................................................................................. 86
Subiect nr. 13 ................................................................................................. 89
Subiect nr.14 .................................................................................................. 91
Subiect nr. 15 ................................................................................................. 93
Subiect nr. 16 ................................................................................................. 96
Subiect nr. 17 ................................................................................................. 99
Subiect nr. 18 ............................................................................................... 101
Subiect nr. 19 ............................................................................................... 103
Subiect nr. 20 ............................................................................................... 106
Subiect nr. 21 ............................................................................................... 108
Subiect nr. 22 ............................................................................................... 110
Subiect nr. 23 ............................................................................................... 113

6
Probleme pentru ATESTAT 2013

Subiect nr. 24............................................................................................... 116


Subiect nr. 25............................................................................................... 118
Subiect nr. 26............................................................................................... 120
Subiect nr. 27............................................................................................... 123
Subiect nr. 28.............................................................................................. 125
Subiect nr. 29............................................................................................... 127
Subiect nr. 30............................................................................................... 130
OFFICE ........................................................................................................... 133
Subiectul nr.1 .............................................................................................. 133
Subiectul nr. 2 ............................................................................................. 134
Subiectul nr. 3 ............................................................................................. 135
Subiectul nr. 4 ............................................................................................. 137
Subiectul nr. 5 ............................................................................................. 138
Subiectul nr. 6 ............................................................................................. 139
Subiectul nr. 7 ............................................................................................. 141
Subiectul nr. 8 ............................................................................................. 142
Subiectul nr. 9 ............................................................................................. 144
Subiectul nr. 10 ........................................................................................... 145
Subiect nr. 11............................................................................................... 146
Subiect nr. 12............................................................................................... 148
Subiect nr. 13............................................................................................... 149
Subiect nr. 14............................................................................................... 150
Subiect nr. 15............................................................................................... 151
Subiect nr. 16............................................................................................... 153
Subiectul nr.17 ............................................................................................ 154
Subiectul nr. 18 ........................................................................................... 155
Subiectul nr. 20 ........................................................................................... 157
Subiect nr. 21............................................................................................... 158
Subiect nr. 22............................................................................................... 159
Subiect nr. 23............................................................................................... 161

7
Probleme pentru ATESTAT 2013

Subiect nr. 24 ............................................................................................... 162


Subiect nr. 25 ............................................................................................... 163
Subiect nr. 26 ............................................................................................... 165
Subiect nr. 27 ............................................................................................... 166
Subiect nr. 28 ............................................................................................... 168
Subiect nr. 29 ............................................................................................... 170
Subiectul nr. 30 ............................................................................................ 171

8
Probleme pentru ATESTAT 2013

PROGRAMARE

Problema 1
Autori
Daniela Marcu, prof. gr. did. I
Ovidiu Marcu, prof. gr. did. I
Colegiul Național ”Ștefan cel Mare” Suceava
Enunţ
Din fişierul text vector.in se citesc: un număr natural n reprezentând numărul
de componente ale unui vector cu numere naturale şi cele n componente ale
vectorului (n<50000). Fiecare componentă va fi un număr natural cu cel
puţin două cifre!
a) Afişaţi elementele vectorului pe primul rând al fişierului text vector.out,
separate prin câte un spaţiu.
b) Sortaţi crescător vectorul, după ultimele două cifre ale fiecăruia din cele
n numere ce reprezintă componentele vectorului, apoi afişaţi, pe al
doilea rând al fişierului vector.out componentele vectorului sortat,
separate prin câte un spaţiu.
Exemplu: Dacă fişierul vector.in are forma:
5
122 13 1445 9000 321
atunci fişierul vector.out va conţine:
122 13 1445 9000 321
9000 13 321 122 1445

Descriere soluţie
Se efectuează citirea din fişier şi afişarea componentelor, în ordinea preluării
lor.
Se reţin, de la fiecare componentă, într-un vector auxiliar, ultimele două cifre.
Pentru sortarea elementelor se poate utiliza orice algoritm de sortare. În
rezolvarea de mai jos este utilizată metoda bulelor.

Sursă C++
#include<fstream>
using namespace std;

9
Probleme pentru ATESTAT 2013

int n,x[51000],y[51000];
intmain()
{
ifstream f("vector.in");
ofstream g("vector.out");
f>>n;
inti,aux;
for(i=1;i<=n;i++)
{
f>>x[i];
y[i]=x[i]%100;
g<<x[i]<<" ";
}
g<<'\n';
//sortarea
int sort=0;
while(sort==0)
{
sort=1;
for(i=1;i<n;i++)
if(y[i]>y[i+1])
{
aux=y[i];
y[i]=y[i+1];
y[i+1]=aux;
aux=x[i];
x[i]=x[i+1];
x[i+1]=aux;
sort=0;
}
}
for(i=1;i<=n;i++)
g<<x[i]<<" ";
return 0;
}

10
Probleme pentru ATESTAT 2013

Problema 2
Autori
Daniela Marcu, prof. gr. did. I
Ovidiu Marcu, prof. gr. did. I
Colegiul Național ”Ștefan cel Mare” Suceava
Enunţ

Din fişierul text vector.in se citesc: un număr natural n (n<10000) reprezentând


numărul de componente ale unui vector cu numere naturale şi cele n
componente ale vectorului.
a) Afişaţi componentele vectorului, pe primul rând al fişierului text
vector.out, în ordine inversă citirii lor .
b) Pe al doilea rând al fişierului text vector.outafişaţi media aritmetică a
componentelor vectorului, care sunt divizibile cu 3. Există cel puțin un
număr multiplu de 3.
Exemplu: Dacă fişierul vector.inare forma:
5
12 6 48 28 33
atunci fişierul vector.out va conţine:
33 28 48 6 12
24.75

Descriere soluţie
La citirea din fişier, se efectuează suma componentelor divizibile cu 3 şi se
numără acestea.
Se afişează conform celor două cerinţe.

Sursă C++
#include<fstream>

using namespace std;


intn,x[10010];
intmain()
{
float s=0;
int nr=0;
ifstream f("vector.in");
ofstream g("vector.out");
f>>n;
inti,aux;

11
Probleme pentru ATESTAT 2013

for(i=1;i<=n;i++)
{
f>>x[i];
if(x[i]%3==0)
{
s+=x[i];
nr++;
}
}
for(i=n;i>=1;i--)
g<<x[i]<<" ";
g<<'\n';
g<<s/nr;
return 0;
}

Problema 3
Autori
Daniela Marcu, prof. gr. did. I
Ovidiu Marcu, prof. gr. did. I
Colegiul Național ”Ștefan cel Mare” Suceava

Enunţ
Din fişierul text vector.in se citesc: un număr natural n (n<2000)şi n perechi de
numere a, bsunt două numere întregi ce reprezintă capetele unor intervale
închise la ambele capete, de forma [a,b] (a<b).
Pe primul rând al fişierului text vector.out, afişaţi suma obţinută prin adunarea
tuturor numerelor întregi aflate în intervalul obţinut prin intersectarea celor n
intervale date. Dacă intersecţia este mulţimea vidă, atunci se va afişa mesajul
„Niciun element!”.
Exemplu: Dacă fişierul vector.inare forma:
3
-3 2
-2 10
-2 7
atunci fişierul vector.out va conţine:
0
Explicaţie: Intervalul obţinut prin intersectarea celor n intervale este [-2,2].

12
Probleme pentru ATESTAT 2013

Descriere soluţie
Se determină maximul pentru capetele din stânga ale intervalelor şi minimul
pentru capetele din dreapta. Se calculează suma numerelor întregi cuprinse între
aceste două valori determinate. Dacă maximul este mai mare decât minimul,
intersecţia nu va conţine niciun element.

Sursă C++
#include <iostream>
#include<cstdio>

using namespace std;

int main()
{
intn,i,a,b,maxx,minn;
freopen("vector.in","r",stdin);
freopen("vector.out","w",stdout);
cin>>n;
cin>>a>>b;
maxx=a; minn=b;
for(i=2;i<=n;i++)
{
cin>>a>>b;
if(a>maxx)
maxx=a;
if(b<minn)
minn=b;
}
int s=0;
if(maxx>minn)
cout<<"Niciun element!";
else
{
for(i=maxx;i<=minn;i++)
s+=i;
cout<<s;
}
return 0;
}

13
Probleme pentru ATESTAT 2013

Problema 4
Autori
Daniela Marcu, prof. gr. did. I
Ovidiu Marcu, prof. gr. did. I
Colegiul Național ”Ștefan cel Mare” Suceava

Enunţ
Este sfârşitul şcolii. Dirigintele clasei doreşte să premieze elevii cei mai buni.
Pentru aceasta are nevoie de o ierarhizare a acestora, în ordinea descrescătoare a
mediilor. Ştiind că, pentru fiecare din cei n elevi ai clasei se cunosc numele şi
media generală, ajutaţi-l pe diriginte să facă premierea.
Datele se citesc din fişierul vector.in astfel:
- Pe prima linie se află numărul n de elevi;
- Pe următoarele n linii se află numele elevului şi media, separate prin
câte un spaţiu.

În fişierul de ieşire vector.out se vor afişa pe n linii, separate prin câte un spaţiu,
numele elevului şi media, în ordinea descrescătoare a mediilor.
Exemplu: Dacă fişierul vector.in are forma:
3
Popoviciu 7.86
Ionovici 9.47
Arhivescu 8. 88
atunci fişierul vector.out va conţine:
Ionovici 9.47
Arhivescu 8.88
Popoviciu 7.86

Descriere soluţie
Datele se vor memora folosind o structură elev cu două câmpuri: nume, media.
Se va aplica un algoritm de sortare şi se vor afişa datele în fişierul indicat.

Sursă C++
#include <iostream>
#include<cstdio>

using namespace std;

structelev{

14
Probleme pentru ATESTAT 2013

charnume[30];
float media;};

int main()
{
intn,i,t;
elevx[40],aux;
freopen("vector.in","r",stdin);
freopen("vector.out","w",stdout);
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x[i].nume;
cin>>x[i].media;
}
t=0;
while(!t)
{
t=1;
for(i=1;i<n;i++)
if(x[i].media<x[i+1].media)
{
t=0;
aux=x[i];
x[i]=x[i+1];
x[i+1]=aux;
}
}
for(i=1;i<=n;i++)
cout<<x[i].nume<<" "<<x[i].media<<"\n";
return 0;
}

15
Probleme pentru ATESTAT 2013

Problema 5
Autori
Daniela Marcu, prof. gr. did. I
Ovidiu Marcu, prof. gr. did. I
Colegiul Național ”Ștefan cel Mare” Suceava

Enunţ
Din fişierul vector.in se citesc: n un număr natural nenul reprezentând numărul
de componente ale unui vector cu numere naturale nenule şi cele n componente
ale vectorului.
a) Afişaţi, pe primul rând al fişierului vector.out mesajul „Exista” sau
„Nu exista”, dacă printre componentele vectorului există vreun
număr perfect. Un număr este perfect dacă este egal cu suma
divizorilor săi.
b) În cazul în care, există cel puţin un număr perfect, afişaţi, pe al
doilea rând al fişierului vector.out suma tuturor numerelor perfecte
din şirul dat. Dacă nu există niciun număr cu proprietatea cerută, pe
al doilea rând al fişierului de ieşire se va afişa -1.
Exemplu: Dacă fişierul vector.inare forma:
6
13 33 6 28 6 16
atunci fişierul vector.out va conţine:
Exista
40
Explicaţie: Numărul 6 este perfect deoarece 6=1+2+3

Descriere soluţie
La citire se verifică proprietatea de număr perfect. Dacă numărul îndeplineşte
această cerinţă, se va aduna la o sumă. În funcţie de valoarea finală a sumei se
vor face afişările corespunzătoare cerinţei problemei.

Sursă C++
#include <iostream>
#include<cstdio>

using namespace std;

int perfect(int nr)


{
int s=0;
16
Probleme pentru ATESTAT 2013

for(inti=1;i<=nr/2;i++)
if(nr%i==0)
s+=i;
return (s==nr);
}
int main()
{
intn,i,x;
int s=0;
freopen("vector.in","r",stdin);
freopen("vector.out","w",stdout);
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x;
if(perfect(x))
s+=x;
}
if(s)
{
cout<<"Exista"<<"\n";
cout<<s;
}
else
{
cout<<"Nu exista"<<"\n";
cout<<"-1";
}
return 0;
}

Problema6
Autor
Acatrinei-Vasiliu Cristinel, prof. grad I
Colegiul „Vasile Lovinescu” Fălticeni
Enunţ
Din fișierul text date.in se citesc numere întregi. Să se determine cel mai mare
divizor propriu al fiecărui număr citit. Afișarea va fi făcută în fișierul date.out.
Exemplu :
date.in date.out
6 8 15 21 Divizorul maxim al elementului 6 este
17
Probleme pentru ATESTAT 2013

3
Divizorul maxim al elementului 8 este
4
Divizorul maxim al elementului 15 este
5
Divizorul maxim al elementului 21 este
7

Descriere soluţie:
Se citesc numere din fișierul date.in în vectorul v. Pentru fiecare element din
vector, se află divizorii proprii şi se testează care dintre aceștia este cel mai
mare. Rezultatul se va scrie în fișierul text date.out. Fișierul date.out va fi
deschis pentru adăugare.

Sursă C++:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
int v[100],i=0,nr=0,max,div=1;
ifstream f("date.in");
while(!f.eof())
{
i++;
f>>v[i];
nr++;
}
f.close();
for(i=1;i<=nr;i++)
{
max=1;
for(int j=1;j<=v[i]/2;j++)
{
if(v[i]%j==0)
div=j;
if(div>max)
max=div;
}
ofstream g("date.out",ios::app);
g<<"Divizorul maxim al elementului "<<v[i]<<"
este "<<max<<endl;

18
Probleme pentru ATESTAT 2013

g.close();
}
}

Problema7
Autor
Acatrinei-Vasiliu Cristinel, prof. grad I
Colegiul „Vasile Lovinescu” Fălticeni

Enunţ
Din fisierul date.in se citesc de pe prima linie un număr natural n, iar de pe
următoarele n linii o matrice patratică de dimensiune nxn. Să se afișeze suma
elementelor de pe fiecare linie. Rezultatul va fi afișat în fisierul date.out sub
forma:
linie 1 - >suma_1
linie 2 - >suma_2
.........
linie n ->suma_n
Exemplu :
date.in date.out
4 linie 1 - > 16
2536 linie 2 - > 20
3584 linie 3 - > 12
1263 linie 4 - > 25
8359
Descriere soluţie:
Se citește din fișierul date.in cîte elemente conține matricea apoi linie cu linie
elementele din matrice. Pentru fiecare linie citită se calculează suma elementele
care o formează. Rezultatul se va scrie în fișierul text date.out.

Sursă C++:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int nxn[100][100],i,n,j,s=0;
fstream f("date.in",ios::in);
f>>n;

19
Probleme pentru ATESTAT 2013

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>nxn[i][j];
fstream g("date.out",ios::out);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
s=nxn[i][j]+s;
g<<"linie "<<i<<" ->"<<s<<endl;
s=0;
}
return 0;
}

Problema 8
Autor
Șestac Suzana, prof. grad I
Liceul Teoretic ”Ion Luca”, Vatra Dornei
Enunţ
Fie sirului Fibonacci datprinrecurența
F0=0, F1=1,…,Fn=Fn-1 + Fn-2.
Să se calculezerecursiv al n-lea termen Fibonacci.
Exemplu: pentru n=5 se vaafișa 5, iarpentru n=8 se vaafișa 21.

Sursă C++:
#include<iostream>
using namespace std;
int n;
long fib ( int n)
{
if( n==0 || n==1)
return 1;
else
return fib(n-1)+fib(n-2);
}

int main()
{

cin>>n ;

20
Probleme pentru ATESTAT 2013

cout<<fib(n);
return 0;

Problema 9
Autor
Șestac Suzana, prof. grad I
Liceul Teoretic ”Ion Luca”, Vatra Dornei
Enunţ
Din fișierul contur.in se citește n, număr natural (2<=n<=20) și o matrice
pătratică de dimensiune nxn. Realizați un program care afișeazăîn fișierul
contur.out :
a) conturul matricei
b) câte elemente prime se află pe conturul matricei

Exemplu: Pentru n=3 și matricea:


123
456
789
Se va afișa:
12369874
3
Sursă C++:
#include<fstream>
using namespace std;
int a[50][50],b[50],n,i,j,nr,k;
int prim(int x)
{
int i;
for(i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;
}
int main()
{
ifstream f("contur.in");
ofstream g("contur.out");
f>>n;

21
Probleme pentru ATESTAT 2013

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
for(j=1;j<=n;j++)
{
k++;
b[k]=a[1][j];

}
for(i=2;i<=n;i++)
{
k++;
b[k]=a[i][n];
}

for(j=n-1;j>=1;j--)
{
k++;
b[k]=a[n][j];

}
for(i=n-1;i>=2;i--)
{
k++;
b[k]=a[i][1];
}
for(i=1;i<=k;i++)
g<<b[i]<<" ";
g<<"\n";
for(i=1;i<=k;i++)
if(prim(b[i]))
nr++;
g<<nr;
return 0;
}

22
Probleme pentru ATESTAT 2013

Problema 10
Autor
Șestac Suzana, prof. grad I
Liceul Teoretic ”Ion Luca”, Vatra Dornei
Enunţ
Realizați un program care determină cel mai mare divizor comun al elementelor
situate pe fiecare coloană a unei matrici pătratice.
Exemplu: pentru n=3 și matricea
4 12 36
3 15 90
7 6 30
se va afișa 4 , 3 , 1.

Sursă C++:
#include<fstream>
using namespace std;
int a[50][50],n,i,j,x;
int cmmdc(int a, int b)
{

int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
ifstream f("linie.in");
ofstream g("linie.out");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
for(i=1;i<=n;i++)
{
x=cmmdc(a[i][1],a[i][2]);
for(j=3;j<=n;j++)
x=cmmdc(x,a[i][j]);

23
Probleme pentru ATESTAT 2013

g<<x<<" ";
}
return 0;
}

Problema 11
Autor
Șestac Suzana, prof. grad I
Liceul Teoretic ”Ion Luca”, Vatra Dornei
Enunţ
Se citește un șir de n(număr natural 1<n<=10) numere naturale. Se formează
unnumăr cu ultimacifră a fiecăruinumăr din șir. Să se scrie un program care
afișează peecrandacă numărulastfelobținuteste palindrom(adică dacă citit de la
stânga la dreaptaesteegal cu celcitit de la dreapta la stânga).

Exemplu: Pentru n=6 și numerele 11 22 43 151 17 3, se va afișa mesajul ”nu


este palindrom”.

Sursă C++:
#include<iostream>
using namespace std;
int a[50],n,i,nr,inv,x;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i];
nr=nr*10+a[i]%10;
}
x=nr;
while(nr)
{
inv=inv*10+nr%10;
nr=nr/10;
}
if(inv==x)
cout<<"palindrom";
24
Probleme pentru ATESTAT 2013

else
cout<<" nu estepalindrom";
return 0;
}

Problema 12
Autor
Mihaela Hatmanu, prof. grad I
Colegiul Naţional „Ştefan cel Mare” Suceava

Enunţ
Să se citească din fişiereul text „date.in” un şir de maximum 255 de caractere
format din cuvinte separate prin unul sau mai multe spaţii. Cuvintele sunt
formate numai din litere mici ale alfabetului englez. Scrieţi un program C/C++
care citeşte un astfel de şir şi afişează pe ecran frecvenţa de apariţie a fiecăreu
litere din şir.

Exemplu:
Pentru şirul: competente profesionale

Se va afişa:
a apare de 1 ori
c apare de 1 ori
e apare de 5 ori
f apare de 1 ori
i apare de 1 ori
l apare de 1 ori
m apare de 1 ori
n apare de 2 ori
o apare de 3 ori
p apare de 2 ori
r apare de 1 ori
s apare de 1 ori
t apare de 2 ori

25
Probleme pentru ATESTAT 2013

Descriere soluţie
Se citeşte şirul de caractere din fişierul text. Asociem fiecărui caracter din
alfabetul englez câte o poziţie într-un vector de numere întregi astfel:
caracterului ‘a’ îi corespunde poziţia 0, caracterului ’b’ îi corespunde poziţia 1,
etc. Se parcurge şirul de caractere dat şi se marchează în acest vector numărul
de apariţii a fiecărui caracter apoi se afişează şirul obţinut.

Sursă C++
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int fr[26];
int main()
{ char sir[255];
int i,x;
ifstream f("date.in");
f.get(sir,255); f.get();
for(i=0;i<strlen(sir);i++)
{ x=sir[i]-'a';
fr[x]++; }
for(i=0;i<26;i++)
if(fr[i])
cout<<(char)(i+'a')<<" apare de "<<fr[i]<<" ori "<<endl;
return 0;
}

Problema 13
Autor
Mihaela Hatmanu, prof. grad I
Colegiul Naţional „Ştefan cel Mare” Suceava
Enunţ
Să se citească de la tastatură două şiruri formate din maximum 25 de caractere
fiecare Fiecare şir conţine numai litere mici ale alfabetului englez. Scrieţi un
program C/C++ care verifică şi afişează printr-un mesaj sugestiv, dacă cele
două şiruri sunt sau nu anagrame (să conţină aceleaşi litere, în orice ordine de
apariţie).

26
Probleme pentru ATESTAT 2013

Exemplu:
Pentru şirurile „curat” si „urcat” se afişează “sirurile sunt anagrame”
Pentru şirurile „problema” si „emblema” se afişează “sirurile nu sunt
anagrame”

Descriere soluţie
Se citesc cele două cuvinte de la tastatură. Dacă şirurile au aceeaşi lungime, se
caută pe rând câte un caracter din primul cuvânt în cel de-al doilea cuvânt. Dacă
este găsit, se şterge acest caracter din ambele şiruri. Dacă s-au găsit toate
literele, şirurile sunt anagrame; altfel, şirurile nu pot fi anagrame.

Sursă C++:
#include <iostream>
#include <fstream.h>
#include <string.h>
using namespace std;
int main()
{
char sir1[25],sir2[25],*p;
int ok;
ifstream f("date.in");
cin>>sir1>>sir2;
if(strlen(sir1)==strlen(sir2)) ok=1;
else ok=2;
while(strlen(sir1) && ok)
{p=strchr(sir2,sir1[0]);
if(p)
{strcpy(sir1,sir1+1);
strcpy(p,p+1);}
else ok=0;
}
if(ok) cout<<" sirurile sunt anagrame";
else cout<<"sirurile nu sunt anagrame";
return 1;
}

27
Probleme pentru ATESTAT 2013

Problema 14
Autor
Liliana David, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se dă un vector cu n componente numere întregi (datele se citesc de la tastatură,
n<=50). Răspundeţi următoarelor cerinţe, utilizând subprograme recursive:
a) Să se calculeze şi să se afişeze suma componentelor pozitive din vector.
b) Să se verifice dacă componentele vectorului sunt ordonate crescător. Se
va afişa un mesaj adecvat.

Exemplu: Fie n=5 şi vectorul cu componentele (5,-4,3,7,-1). Se va afişa


valoarea 15 şi mesajul “Vectorul nu este ordonat”.

Descriere soluţie
Se citeşte numărul natural n şi componentele vectorului. Se definesc funcţiile
recursive:
- pentru calculul sumei componentelor pozitive
- prin care se verifică dacă vectorul este ordonat. Aceasta returnează 1
dacă vectorul este ordonat şi 0 în caz contrar.

Sursă C++
#include<iostream.h>
int suma_poz(int n, int v[])
{
if(n==0) return 0;
else if(v[n-1]>0) return suma_poz(n-1,v)+v[n-1];
else return suma_poz(n-1,v);
}
int verific_ord(int n, int v[])
{
if(n==1) return 1;
else if(v[n-2]<=v[n-1]) return verific_ord(n-1,v);
else return 0;
}

void main()
{int v[50],i;unsigned n;
do {cout<<"n=";cin>>n;} while (n<1 || n>50);
for(i=0;i<n;i++)
cin>>v[i];

28
Probleme pentru ATESTAT 2013

cout<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<" ";
cout<<"\nSuma componentelor pozitive este
"<<suma_poz(n,v);
if(verific_ord(n,v)) cout<<"\nVectorul este ordonat";
else cout<<"\nVectorul nu este ordonat";
}

Problema 15
Autor
Liliana David, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se dă un vector cu n componente numere naturale (datele se citesc de la
tastatură, n<=50). Să se înlocuiască componentele neprime din vector cu
numărul divizorilor acestora. Se vor utiliza subprogramele recursive: nrd care
va implementa un algoritm de numărare a divizorilor unui număr natural şi
inlocuire prin care se vor înlocui componentele neprime din vector.

Exemplu: Dacă vectorul citit este (5,6,1,0,15), după înlocuire devine


(5,4,1,0,4).

Descriere soluţie
Se citeşte numărul natural n şi componentele vectorului. Se definesc funcţiile
recursive:
- nrd pentru calculul numărului de divizori ai unui număr natural. Se va
considera că numărul 0 are 0 divizori.
- Înlocuire pentru înlocuirea componentelor neprime. Pentru a verifica
dacă o componentă este o valoare neprimă se utilizează funcţia nrd, care
returnează 2 pentru o valoare primă şi o valoare diferită de 2 pentru o
valoare neprimă.

Sursă C++
#include<iostream.h>
int nrd(unsigned n,unsigned k)
{ if(n==0) return 0;

29
Probleme pentru ATESTAT 2013

else if(n==k) return 1;


else if(n%k==0) return nrd(n,k+1)+1;
else return nrd(n,k+1);
}
void inlocuire(unsigned n, unsigned v[])
{ if(n>0)
{if(nrd(v[n-1],1)!=2)
v[n-1]=nrd(v[n-1],1);
inlocuire(n-1,v);
}
}
void afisare(unsigned n, unsigned v[])
{unsigned i;
cout<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<" ";
}
void main()
{unsigned n,i,v[50];
do {cout<<"n=";cin>>n;} while (n<1 || n>50);
for(i=0;i<n;i++)
cin>>v[i];
afisare(n,v);
inlocuire(n,v);
afisare(n,v);
}

Problema 16
Autor
Liliana David, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se dă un vector cu n componente numere naturale (datele se citesc de la
tastatură, n<=50). Să se afişeze componentele vectorului care conţin o cifră
dată, nenulă (cifra se citeşte de la tastatură). Se vor utiliza subprogramele
recursive:
- verific care va implementa un algoritm pentru verificarea existenţei unei
cifre într-un număr;
- afiş pentru afişarea componentelor unui vector care conţin o cifră dată.
30
Probleme pentru ATESTAT 2013

Exemplu: Dacă vectorul citit este (15,621,14,502,155) şi c=5 se vor afişa


valorile: 15 502 155.

Descriere soluţie
Se citesc: numărul natural n, componentele vectorului şi cifra. Se definesc
funcţiile recursive:
- verific pentru verificarea existenţei unei cifre într-un număr. Funcţia
returnează 1 în cazul existenţei cifrei în număr şi 0 în caz contrar.
- afiş pentru afişarea componentelor unui vector care conţin o cifră dată.

Sursă C++
#include<iostream.h>
int verific(unsigned n,unsigned c)
{
if(n==0) return 0;
else if(n%10==c) return 1;
else return verific(n/10,c);
}
void afis(unsigned n, unsigned v[], unsigned c)
{
if(n>0)
{if(verific(v[n-1],c))
cout<<v[n-1]<<" ";
afis(n-1,v,c);
}
}
void afisare(unsigned n, unsigned v[])
{unsigned i;
cout<<endl;
for(i=0;i<n;i++)
cout<<v[i]<<" ";
}

void main()
{unsigned n,i,v[50],c;
do
{cout<<"n=";cin>>n;}
while (n<1 || n>50);
for(i=0;i<n;i++)

31
Probleme pentru ATESTAT 2013

cin>>v[i];
afisare(n,v);
do
{cout<<"cifra: ";cin>>c;}
while (c<1 || c>9);
afis(n,v,c);
}

Problema 17
Autor
Liliana David, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se dă un graf neorientat cu n noduri. Numărul de noduri şi muchiile grafului se
citesc din fişierul „graf.txt”. Să se verifice dacă graful este complet şi să se
afişeze un mesaj adecvat. Dacă graful nu este complet să se afişeze muchiile
care ar trebui adăugate astfel încât graful să devină complet.

Exemplu: Dacă fişierul „graf.txt” are următorul conţinut:


5
13
14
15
24
35
Se va afişa mesajul “Graful nu este complet” după care se vor afişa muchiile
lipsă:
12
23
25
34
45

Descriere soluţie
Se construieşte matricea de adiacenţă citind datele din fişier. Se definesc
funcţiile:
- grad - pentru calculul gradului unui nod;

32
Probleme pentru ATESTAT 2013

- complet - pentru a verifica dacă graful este complet. Funcţia returnează


1 dacă toate nodurile au gradul n-1 şi 0 în caz contrar.
- muchii – în care se afişează muchiile lipsă. Se parcurg componentele
matricei de adiacenţă situate deasupra diagonalei principale şi se
afişează poziţiile componentelor egale cu 0.

Sursă C++
#include<iostream.h>
#include<fstream.h>
void citire(int &n, int a[][20])
{int i,j;
ifstream f("graf.txt");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) a[i][j]=0;
while(!f.eof())
{f>>i>>j;
a[i][j]=a[j][i]=1;
}
f.close();
}
int grad(int n, int a[][20], int nod)
{int i,nr=0;
for(i=1;i<=n;i++)
nr=nr+a[nod][i];
return nr;
}
int complet(int n, int a[][20])
{int i,ok;
ok=1;
for(i=1;i<=n;i++)
if(grad(n,a,i)!=n-1) ok=0;
return ok;
}
void muchii(int n,int a[][20])
{int i,j;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i][j]==0)
cout<<endl<<i<<" "<<j;
}
void main()
{int n,a[20][20];
citire(n,a);

33
Probleme pentru ATESTAT 2013

if(complet(n,a)) cout<<"\nGraful este complet";


else {cout<<"\nGraful nu este complet";
cout<<"\nPentru a deveni complet trebuie adaugate
muchiile:";
muchii(n,a);
}
}

Problema 18
Autor
Liliana David, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se dă un graf neorientat cu n noduri. Numărul de noduri şi muchiile grafului se
citesc din fişierul „graf.txt”. Să se verifice dacă graful este regulat. În situaţia în
care graful nu este regulat să se afişeze nodurile terminale şi numărul de noduri
izolate. (Un graf neorientat se numește regulat dacă toate nodurile sale au
același grad).
Exemplu: Dacă fişierul „graf.txt” are următorul conţinut:
5
13
15
24
35
Se va afişa mesajul “Graful nu este regulat” după care se vor afişa nodurile
terminale: 2, 4 şi numărul de noduri izolate: 0

Descriere soluţie
Se construieşte matricea de adiacenţă citind datele din fişier. Se definesc
funcţiile:
- grad - pentru calculul gradului unui nod;
- regulat - pentru a verifica dacă graful este regulat. Funcţia returnează 1
dacă toate nodurile au acelaşi grad cu nodul 1 şi 0 în caz contrar.
În situaţia în care graful nu este regulat se afişează nodurile terminale (nodurile
de grad 1) după care se numără nodurile izolate (nodurile de grad 0).

Sursă C
#include<iostream.h>
34
Probleme pentru ATESTAT 2013

#include<fstream.h>
void citire(int &n, int a[][20])
{int i,j;
ifstream f("graf.txt");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) a[i][j]=0;
while(!f.eof())
{f>>i>>j;
a[i][j]=a[j][i]=1;
}
f.close();
}
int grad(int n, int a[][20], int nod)
{int i,nr=0;
for(i=1;i<=n;i++)
nr=nr+a[nod][i];
return nr;
}
int regulat(int n, int a[][20])
{int i,ok,g;
ok=1;
g=grad(n,a,1);
for(i=2;i<=n;i++)
if(grad(n,a,i)!=g) ok=0;
return ok;
}
void main()
{int n,a[20][20],i,nr;
citire(n,a);
if(regulat(n,a)) cout<<"\nGraful este regulat";
else {cout<<"\nGraful nu este regulat";
cout<<"\nNodurile terminale sunt: ";
for(i=1;i<=n;i++)
if(grad(n,a,i)==1) cout<<i<<" ";
nr=0;
for(i=1;i<=n;i++)
if(grad(n,a,i)==0) nr++;
cout<<"\nNumarul de noduri terminale este "<<nr;
}
}

35
Probleme pentru ATESTAT 2013

Problema 19
Autor
Liliana David, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se dă graful un graf neorientat pentru care datele se citesc din fişierul „graf.txt”.
Să se verifice dacă un şir de m numere citite de la tastatură este lanţ în graf şi să
se afişeze un mesaj adecvat. Dacă formează lanţ, să se verifice dacă lanţul este
elementar.

Exemplu: Dacă fişierul „graf.txt” are următorul conţinut:


5
13
14
15
24
35
Şirul de numere 2 4 1 3, citit de la tastatură, formează lanț elementar.
Şirul de numere 4 2 3 1 5 nu formează lanț.

Descriere soluţie
Se construieşte matricea de adiacenţă citind datele din fişier după care se citesc
lungimea şi elementele unui şir care se memorează într-un vector. Se definesc
funcţiile:
- lanţ – care returnează 1 dacă elementele din şirul citit formează lanţ
(sunt noduri şi oricare 2 elemente consecutive din şir sunt adiacente) şi 0
în caz contrar;
- elementar - pentru a verifica dacă un lanţ este elementar. Funcţia
returnează 1 dacă elementele şirului sunt distincte şi 0 în caz contrar.

Sursă C++
#include<iostream.h>
#include<fstream.h>
void citire(int &n, int a[][20])
{int i,j;
ifstream f("graf.txt");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) a[i][j]=0;
while(!f.eof())
36
Probleme pentru ATESTAT 2013

{f>>i>>j; a[i][j]=a[j][i]=1; }
f.close();
}
void citire_v(int &m, int v[])
{int i;
cout<<"Nr. componente "; cin>>m;
for(i=1;i<=m;i++) cin>>v[i];
}
int verific_lant(int n,int a[][20],int m,int v[])
{int ok=1,i;
if(v[1]<1 || v[1]>n) ok=0;
else
for(i=2;i<=m;i++)
if(v[i]<1 || v[i]>n) ok=0;
else if(a[v[i-1]][v[i]]==0) ok=0;
return ok;
}
int elementar(int m,int v[])
{int i,j,ok=1;
for(i=1;i<m;i++)
for(j=i+1;j<=m;j++)
if(v[i]==v[j]) ok=0;
return ok;
}
void main()
{int n,a[20][20],m,v[20];
citire(n,a); citire_v(m,v);
if(verific_lant(n,a,m,v))
{cout<<"\nSecventa data formeaza lant in graf";
if(elementar(m,v)) cout<<"\nLantul este elementar";
else cout<<"\nLantul nu este elementar";}
else cout<<"\nSecventa data nu formeaza lant in graf";}

37
Probleme pentru ATESTAT 2013

Problema 20
Autor
Marius Măgurean, prof. grad I
Câmpulung
Enunț
Se citește de la tastatură o serie de n numere întregi. Afișați primul și ultimul
număr par din serie. Afișările se vor face cu text semnificativ, câte o informație
pe linie. Dacă nu există cel puțin 2 numere pare în serie se va afișa textul ”Nu
exista”.

Exemple:
1. n = 6, seria : 6 1 2 7 4 9, se va afișa 6 și 4.
2. n=4, seria : 6 1 3 7 5 9, se va afișa ”Nu exista”.

Descrierea soluției:
Problema se rezolvă dintr-o singură parcurgere a seriei, prin urmare nu avem
nevoie de vector pentru reținerea datelor, ci doar de o variabilă nr ce va reține
pe rând elementele seriei . Vom folosi două variabile prim și ultim, ele vor
reține primul și ultimul număr par din serie. Inițializăm valorile lor cu un număr
impar pentru a trata cazul când nu sunt cel puțin două numere pare în serie
(dacă la final valorile lor sunt diferite de 1, atunci avem prim și ultim, altfel nu).
Atunci când găsim primul număr par îl atribuim variabilei prim, iar pentru
următoarele numere pare ultim va memora valoarea lor. Evident, ultimul număr
reținut de ultim va fi chiar ultimul număr par din serie.

Sursă C++:
#include<iostream>
usingnamespacestd;
intmain()
{
int n,nr,prim=1,ultim=1,i;
cout<<"Dati nr de elemente al seriei: ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"Dati elementul: ";
cin>>nr;
if(nr%2==0 && prim==1)
prim=nr;
else
if(nr%2==0)
38
Probleme pentru ATESTAT 2013

ultim=nr;
}
if(prim!=1 && ultim!=1)
{
cout<<"Primul numar par din serie este: "<<prim;
cout<<"\nUltimulnumar par din serie este: "<<ultim;
}
else
cout<<"Nu exista!";
return 0;
}

Problema 21
Autor
Marius Măgurean, prof. grad I
Câmpulung
Enunț
În fișierul text ”atestat.in” se găsesc pe prima linie două numere întregi n și k
(1<k<n<=1000), iar pe următoarea linie n numere întregi separate prin spații.
Afișați în fișierul text ”atestat.out” primele k minime din seria de n numere de
pe linia a doua a fișierului de intrare.

Exemplu:n=5, k=3, seria este: 3, 2, -3, 6 și -1, se va afișa -3, -1, 2.

Descrierea soluției:
Citim datele din fișierul de intrare într-un vector de n întregi. Aplicăm pașii
algoritmului de sortare prin selecția minimului de k ori și nu de n-1 ori cât este
standard, pentru a obține pe rând cele k minime.
Algoritmul de sortare prin selecția minimului constă în plasarea în ordine
crescătoare a primelor n-1 elemente ale vectorului, ultimul ajungând automat pe
ultima poziție.

Sursă C++:
#include<fstream>
Usingnamespacestd;

intmain()
{

39
Probleme pentru ATESTAT 2013

int n ,k, pas, i, v[1000], aux, min, poz;


ifstream fin("atestat.in");
ofstreamfout("atestat.out");
//citim prima linie a fisierului
fin>>n>>k;
//citim vectorul din fisier
for(i=0;i<n;i++)
fin>>v[i];
//rulam algoritmul de sortare doar pentru primele k
minime
for(pas=0;pas<k;pas++)
{
//initializam minimul cu primul element din
subvector si ii retinempozitia
min=v[pas], poz=pas;
//rulam algoritmul de minim pentru restul
elementelor si retinempozitia
for(i=pas+1;i<n;i++)
if(min>v[i])
{
min=v[i], poz=i;
}
//interschimbam primul element din subvector cu
elementul care realizeaza minimul
aux=v[pas], v[pas]=v[poz], v[poz]=aux;
//minimul obtinutilafisam in fisierul de iesire
fout<<v[pas]<<" ";
}
return 0;
}

40
Probleme pentru ATESTAT 2013

Problema 22
Autor
Marius Măgurean, prof. grad I
Câmpulung
Enunț
Se citesc de la tastatură două numere întregi n și m. Construiți și afișați pe
ecran, linie cu linie o matrice n*m construită după regula: a[i][j] =
min(i,j).Numerotarea liniilor, respectiv coloanelor matricei începe de la 1.

Exemplu: Pentru n=2 și m=3 se va afișa matricea:


111
122

Descrierea soluției:
Citim numărul de linii, respectiv coloane și cu ajutorul a două structuri
repetitive forși construim matricea linie cu linie după formulă, iar imediat după
creare afișăm elementul.

Sursă C++:
#include<iostream>

usingnamespacestd;

intmain()
{
int n, m, i, j, a[100][100];
cout<<"Dati nr de linii si de coloane";
cin>>n>>m;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
a[i][j]=((i>=j)?i:j);//if(i>=j) a[i][j] = i
else a[i][j] = j;
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}

41
Probleme pentru ATESTAT 2013

Problema 23
Autor
Marius Ududec, prof. grad I
Colegiul Naţional „Petru Rareş” Suceava
Enunţ
Fişierul text „graf.in” conţine pe prima linie un număr natural n reprezentând
numărul de vârfuri ale unui graf neorientat, iar pe fiecare din următoarele n
rânduri câte n valori de 0 şi 1 separate prin spaţii, reprezentând elementele unei
linii a matricei de adiacenţă corespunzătoare grafului.
a) Să se scrie o funcțiegradceprimeşte ca parametru un număr natural x şi
returnează gradul vârfului x.
b) Să se scrie programul C++ care citeşte datele din fişier şi care afişează
în fişirul text „graf.out”, pe primul rând, separate prin câte un spaţiu
vârfurile terminale ale grafului, sau mesajul „Nu există”, dacă în graf nu
sunt vârfuri terminale, folosind apeluri utile ale subprogramului grad.

Exemplu: Dacă fişierul ”graf.in” are forma:


5
00101
00011
10000
01000
11000
atunci fişierul „graf.out” va conţine numerele 3 şi 4.

Descriere soluţie
Gradul unui vârf x reprezintă numărul muchiilor incidente cu nodul x. Se
numeşte vârf terminal un vârf care are gradul egal cu 1 (este incident cu o
singură muchie). Pentru determinarea gradului unui vârf oarecare x se numără
în variabila k câte valori de 1 există pe linia x a matricei de adiacenţă. Pentru a
determina dacă în graf există sau nu vârfuri terminale se foloseşte o variabilă
semafor gasit, definită astfel:
1, dacă în graf sunt noduri ter min ale
gasit  
0, în caz contrar

Sursă C++
#include <fstream>
using namespace std;

42
Probleme pentru ATESTAT 2013

int a[20][20],n;
int grad(int x)
{
int j,k=0;
for(j=1;j<=n;j++)
k=k+a[x][j];
return k;
}
int main()
{
int i,j,gasit=0;
ifstream in("graf.in");
ofstream out("graf.out");
in>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
in>>a[i][j];
for(i=1;i<=n;i++)
if(grad(i)==1)
{
out<<i<<" ";
gasit=1;
}
if(gasit==0)
out<<"Nu exista";
in.close();
out.close();
return 0;
}

Problema 24
Autor
Marius Ududec, prof. grad I
Colegiul Naţional „Petru Rareş” Suceava
Enunţ
Fişierul text „muchii.txt” conţine pe prima linie un număr natural n
reprezentând numărul de vârfuri ale unui graf neorientat, pe al doilea rând un
număr natural m reprezentând numărul de munchii ale unui graf neorientat, iar
pe fiecare din următoarele m rânduri câte două numere naturale, separate pritr-
un spaţiu, reprezantând extremităţile unei muchii a grafului.
43
Probleme pentru ATESTAT 2013

a) Să se scrie o funcție gradce primeşte ca parametru un număr natural x şi


returnează gradul vârfului x.
b) Să se scrie programul C++ care citeşte datele din fişier, construieşte
matricea de adiacenţă asociată grafului, şi care afişează în fişirul text
„grade.txt”, separate prin câte un spaţiu vârfurile de grad maxim ale
grafului, folosind apeluri utile ale subprogramului grad.

Exemplu: Dacă fişierul ”muchii.txt” are forma:


5
6
12
23
24
34
35
45
atunci fişierul „grade.txt” va conţine numerele 2, 3 şi 4.

Descriere soluţie
Gradul unui vârf x reprezintă numărul muchiilor incidente cu vârful x. Pentru
determinarea vârfurilor de grad maxim se memorează gradele vârfurilor într-un
vector, fiecare element v[i] a vectorului va memora gradul vârfului i. Se
determină elementul maxim din vector, apoi se afişează poziţiile ocupate în
vector de valoarea maximă.

Sursă C++
#include <fstream>
using namespace std;
int a[20][20],v[20],n;
int grad(int x)
{
int j,k=0;
for(j=1;j<=n;j++)
k=k+a[x][j];
return k;
}
int main()
{
int i,max,m,x,y;
ifstream in("muchii.txt");
ofstream out("grade.txt");
in>>n>>m;
44
Probleme pentru ATESTAT 2013

for(i=1;i<=m;i++)
{
in>>x>>y;
a[x][y]=1;
a[y][x]=1;
}
for(i=1;i<=n;i++)
v[i]=grad(i);
max=0;
for(i=1;i<=n;i++)
if(v[i]>max)
max=v[i];
for(i=1;i<=n;i++)
if(v[i]==max)
out<<i<<" ";
in.close();
out.close();
return 0;
}

Problema 25
Autor
Marius Ududec, prof. grad I
Colegiul Naţional „Petru Rareş” Suceava
Enunţ
Fişierul text „adiacenta.in” conţine pe prima linie un număr natural n
reprezentând numărul de noduri ale unui graf orientat, iar pe fiecare din
următoarele n rânduri câte n valori de 0 şi 1 separate prin spaţii, reprezentând
elementele unei linii a matricei de adiacenţă corespunzătoare grafului.
a) Să se scrie o funcție grad_internce primeşte ca parametru un număr
natural x şi returnează gradul intern al nodului x.
Funcţia grad_extern primeşte ca parametru un număr natural x şi
returnează gradul extern al nodului x.
b) Să se scrie programul C++ care citeşte datele din fişier, şi care afişează
în fişirul text „noduri.out”, separate prin câte un spaţiu nodurile grafului
care au gradul intern egal cu gradul extern, folosind apeluri utile ale
subprogramelor grad_intern şi grad_extern.

Exemplu: Dacă fişierul ”adiacenta.in” are forma:


45
Probleme pentru ATESTAT 2013

5
01110
00001
01000
00000
10000
atunci fişierul „noduri.out” va conţine numerele 3 şi 5.

Descriere soluţie
Gradul extern al unui nod x reprezintă numărul arcelor care ies din nodul x, iar
gradul intern al unui nod x reprezintă numărul arcelor care intră în nodul x.
Pentru determinarea gradului extern al unui nod oarecare x se numără în
variabila k câte valori de 1 există pe linia x a matricei de adiacenţă, iar pentru
determinarea gradului intern al unui nod oarecare x se numără în variabila k
câte valori de 1 există pe coloana x a matricei de adiacenţă.

Sursă C++
#include <fstream>
using namespace std;
int a[20][20],n;
int grad_intern(int x)
{
int j,k=0;
for(j=1;j<=n;j++)
k=k+a[x][j];
return k;
}
int grad_extern(int x)
{
int i,k=0;
for(i=1;i<=n;i++)
k=k+a[i][x];
return k;
}
int main()
{
int i,j;
ifstream in("adiacenta.in");
ofstream out("noduri.out");
in>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)

46
Probleme pentru ATESTAT 2013

in>>a[i][j];
for(i=1;i<=n;i++)
if(grad_extern(i)==grad_intern(i))
out<<i<<" ";
in.close();
out.close();
return 0;
}

Problema 26
Autor
Marius Ududec, prof. grad I
Colegiul Naţional „Petru Rareş” Suceava
Enunţ
Fişierul text „arce.txt” conţine pe prima linie un număr natural n reprezentând
numărul de noduri ale unui graf orientat, pe al doilea rând un număr natural m
reprezentând numărul de arce ale unui graf orientat, iar pe fiecare din
următoarele m rânduri câte două numere naturale separate prin spaţii,
reprezentând arcele corespunzătoare unui graf orientat.
a) Să se scrie o funcțiegrad_internce primeşte ca parametru un număr
natural x şi returnează gradul intern al nodului x.
Funcţia grad_extern primeşte ca parametru un număr natural x şi
returnează gradul extern al nodului x.
b) Să se scrie programul C++ care citeşte datele din fişier, construieşte
matricea de adiacenţă asociată grafului, şi care afişează în fişirul text
„izolate.txt”, separate prin câte un spaţiu nodurile izolate ale grafului,
sau mesajul „Nu există”, dacă în graf nu sunt noduri izolate, folosind
apeluri utile ale subprogramelor grad_intern şi grad_extern.

Exemplu: Dacă fişierul ”arce.txt” are forma:


5
3
12
21
24
atunci fişierul „izolate.txt” va conţine numerele 3 şi 5.

47
Probleme pentru ATESTAT 2013

Descriere soluţie
Gradul extern al unui nod x reprezintă numărul arcelor care ies din nodul x, iar
gradul intern al unui nod x reprezintă numărul arcelor care intră în nodul x. Se
numeşte nod izolat un nod care are gradele interne şi externe nule (nu este
adiacent cu niciun alt nod al grafului). Pentru a determina dacă în graf există
sau nu noduri izolate se foloseşte o variabilă semafor gasit, definită astfel:
1, dacă în graf sunt noduri izolate
gasit  
0, în caz contrar

Sursă C++
#include <fstream>
using namespace std;
int a[20][20],n;
int grad_intern(int x)
{
int j,k=0;
for(j=1;j<=n;j++)
k=k+a[x][j];
return k;
}
int grad_extern(int x)
{
int i,k=0;
for(i=1;i<=n;i++)
k=k+a[i][x];
return k;
}
int main()
{
int i,x,y,gasit=0,m;
ifstream in("arce.txt");
ofstream out("izolate.txt");
in>>n>>m;
for(i=1;i<=m;i++)
{
in>>x>>y;
a[x][y]=1;
}
for(i=1;i<=n;i++)
if(grad_intern(i)==0 && grad_extern(i)==0)
{

48
Probleme pentru ATESTAT 2013

out<<i<<" ";
gasit=1;
}
if(gasit==0)
out<<"Nu exista";
in.close();
out.close();
return 0;
}

Problema 27
Autor
Silvia Martinescu, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se citesc numere naturale din fişierul text „numere.txt”. Să se afişeze
numerele care au proprietatea de palindrom (numărul citit de la dreapta la
stânga este egal cu numărul citit de la sânga la dreapta) şi suma cifrelor să fie
pară. Se vor folosi: un subprogram palin care va implementa un algoritm de
determinare a proprietăţii de număr palindrom şi un subprogram care să
calculeze suma cifrelor unui număr natural.

Exemplu: Pentru numerele 12, 12321, 565, 45, 18, 121 se va afişa 565, 121.

Descriere soluţie
Se citesc numerele din fişier şi se calculează suma celor care au proprietatea de
număr palindrom. Se verifică dacă suma calculată este număr par atunci se
afişează numărul citit.

Sursă C++
#include<fstream.h>
#include<conio.h>
unsigned palin (unsigned nr)
{ unsigned nri,inv ;
nri=nr;
inv=0;
while(nr)
{inv=inv*10+nr%10;
nr=nr/10;
49
Probleme pentru ATESTAT 2013

}
return nri==inv;
}

unsigned scifre(unsigned nr)


{unsigned s;
s=0;
while(nr)
{s=s+nr%10;
nr=nr/10;
}
return s;
}
void main()
{
ifstream f("numere.txt");
unsigned nr;
clrscr();
while(f>>nr)
if(palin(nr)&&scifre(nr)%2==0) cout<<nr<<" ";
f.close();
}

Problema 28
Autor
Silvia Martinescu, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se citesc numere naturale din fişierul ”numere.txt”. Câte dintre aceste numere
au toate cifrele cifre impare. Dacă nu există astfel de numere se va afişa un
mesaj corespunzător. Se va folosi un subprogram care să verifice cerinţa din
enunţ referitoare la paritatea cifrelor.

Exemplu: Pentru numerele 135, 57, 279, 791, 56 se va afişa 3, iar pentru
numerele 1234, 56,22, 54, 78 se va afisa mesajul “Nu există nici un număr cu
proprietatea cerută”.

Descriere soluţie

50
Probleme pentru ATESTAT 2013

Se citesc numerele din fişier şi se numără cele care au toate cifrele impare. Dacă
contorul folosit va avea valoarea 0 se va afişa mesajul cerut, altfel se va afişa
valoarea calculată.
În funcţia cifre_impare la prima cifră pară întâlnită se iese din structura
repetitivă.

Sursă C++
#include<fstream.h>
#include<conio.h>
unsigned cifre_impare(unsigned nr)
{unsigned c,da=1;
while(nr&&da)
{
c=nr%10;
if(c%2==0) da=0;
nr=nr/10;
}
return da;
}
void main()
{
ifstream f("numere.txt");
unsigned nr,k;
clrscr();
k=0;
while(f>>nr)
if(cifre_impare(nr)) k++;
f.close();
if(k) cout<<k;
else cout<<"\nNu exista nici un numar cu proprietatea
ceruta";
}

Problema 29
Autor
Silvia Martinescu, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se citesc n numere întregi din fişierul “numere.txt”. Să se afişeze cel mai mare
divizor comun dintre suma tuturor numerelor şi produsul celor cuprinse între 2
51
Probleme pentru ATESTAT 2013

numere date. In fişier pe prima linie vor fi valorile pentru n si cele 2 numere
date, iar pe urmatoarea linie cele n numere.

Exemplu: Pentru numerele


5 17 27
12 34 25 6 21 se va afişa cmmdc(98,525)=7.

Descriere soluţie
Se citesc numerele din fişier şi se calculeaza suma si produsul cerut,
după care se determină cel mai mare divizor comun dintre cele 2 valori
obţinute.
În funcţia cmmdc se ţine cont că valorile date pot fi şi negative.

Sursă C++
#include<fstream.h>
#include<math.h>
#include<conio.h>
int cmmdc(int a, int b)
{
a=abs(a); b=abs(b);
while(a!=b)
if(a>b) a=a-b;
else b=b-a;
return a;
}
void main()
{ifstream f("numere.txt");
int nr,n,a,b,p,s;
clrscr();
f>>n>>a>>b;
s=0; p=1;
for(int i=1;i<=n;i++)
{f>>nr;
s=s+nr;
if(nr>=a&&nr<=b) p=p*nr;
}
f.close();
cout<<"CMMDC("<<s<<","<<p<<")="<<cmmdc(s,p);}

52
Probleme pentru ATESTAT 2013

Problema 30
Autor
Silvia Martinescu, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Fie doi vectori a şi b formaţi din n, respectiv m numere întregi nenule
(m,n<=50). Scrieţi un program care citeşte, numărul de elemente şi valorile din
vectorul a, respectiv b şi afişează valorile din vectorul a care sunt prime cu
toate valorile din vectorul b. Două numere întregi sunt prime între ele dacă cel
mai mare divizor comun al lor este 1.

Exemplu: Fie n=6, a=(77,35,55,15,121,11) şi m=3, b=(18,20,10). Se vor afişa


numerele 77,121,11.

Descriere soluţie
Se citesc cei 2 vectori, după care se verifică dacă cel mai mare divizor
comun dintre fiecare element din primul vector cu toate elementele din al doilea
vector este 1, deci este prim cu ele, şi se afişează.
În funcţia cmmdc se ţine cont că valorile date pot fi şi negative.

Sursă C++
#include <iostream.h>
#include<math.h>
#include<conio.h>
void citire(int x[100],int &n)
{int i;
cout<<"Cate elemente are vectorul?";
cin>>n;
for(i=0;i<n;i++){cout<<"\nIntrodu numarul "<<i<<":";
cin>>x[i];
}
}
int cmmdc(int a, int b)
{
a=abs(a); b=abs(b);
while(a!=b)
if(a>b) a=a-b;
else b=b-a;
return a;
}

53
Probleme pentru ATESTAT 2013

void main()
{int a[100],b[100],n,m,i,j;
citire(a,n);
citire(b,m);
clrscr();
for(i=0;i<n;i++)
{ int da=1;
for(j=0;j<m&&da;j++)
if(cmmdc(a[i],b[j])!=1) da=0;
if(da) cout<<a[i]<<" ";
}
}

Problema 31
Autor
Silvia Martinescu, prof. grad I
Colegiul Tehnic Rădăuţi
Enunţ
Se citesc 2 vectori a şi b cu n, respectiv m componente întregi. Să se determine
dacă cei 2 vectori sunt identici. Dacă nu, să se afişeze poziţia de unde nu mai
coincid elementele.
Vectorii sunt identici dacă au acelaşi număr de elemente şi au aceleaşi valori.

Exemplu: Pentru n=3 și elementele: 1 2 3 și m=3 și elementele: 1 2 3, se va


afișa mesajul ”Cei doi vectori sunt identici”.

Descriere soluţie
Se citesc doi vectori si in funcţia identici se verifică dacă au acelaşi număr de
elemente şi aceleaşi valori. Se reţine prima poziţie de unde elementele
vectorilor nu mai coincid.

Sursă C++
#include <iostream.h>
#include<conio.h>
void citire(int x[100],int &n)
{int i;
cout<<"Cate elemente are vectorul?";
cin>>n;
for(i=0;i<n;i++){cout<<"\nIntrodu numarul "<<i<<":";

54
Probleme pentru ATESTAT 2013

cin>>x[i];
}
}

void identici(int x[100],int y[100],int n, int m)


{ int i,ok,poz;
poz=-1;
if(n!=m) ok=0;
else
{ok=1;
for(i=0;i<n&&ok;i++)
if(x[i]!=y[i]) {ok=0;
poz=i;
}
}
if(ok==0) {
if(poz!=-1) cout<<"\nCei doi vectori nu sunt
identici incepand cu pozitia "<<poz;
else cout<<"\nCei doi vectori nu au nici macar
acelasi numar de elemente";
}
else cout<<"\nCei doi vectori sunt identici";
}

void main()
{int a[100],b[100],n,m;
citire(a,n);
citire(b,m);
clrscr();
identici(a,b,n,m);
}

Problema 32

Autor
Raluca Costineanu, prof. grad II
Colegiul Național „Ștefan cel Mare” Suceava
Enunţ
Scrieţi un program C/C++ care citeşte din fișierul ”date.in” un număr natural n
(1≤n≤20), elementele unei matrice cu n linii şi n coloane, numere întregi din
intervalul [-100,100] şi afişează pe ecran media aritmetică a elementelor prime
55
Probleme pentru ATESTAT 2013

ale matricei, care sunt situate deasupra diagonalei principale. Dacă nu există
elemente prime situate deasupra diagonalei principale, programul va afişa
mesajul „Nu exista!”.

Exemplu: pentru n=4 şi matricea de mai jos se afişează valoarea 3.33333


-1 2 -4 5
0631
2420
3 -5 1 -3

Descriere soluţie
Se citesc datele de intrare din fișier, se determină suma și numărul elementelor
prime situate deasupra diagonalei principale. Se afişează rezultatul.
Pentru a verifica dacă un element este prim se utilizează funcția prim care
primește ca parametru un număr întreg și returnează 1 dacă numărul este prim
și 0 în caz contrar.

Sursă C++
#include<iostream>
#include<fstream>
using namespace std;

int prim(int nr)


{
int i;
if(nr<2)
return 0;
for(i=2; i*i<=nr; i++)
if(nr%i==0)
return 0;
return 1;
}
int main()
{
int a[21][21], n, m=0, s=0, i, j;
ifstream f("date.in");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
f.close();
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
56
Probleme pentru ATESTAT 2013

if(prim(a[i][j]))
{
s+=a[i][j];
m++;
}
if(!m)
cout<<"Nu exista!";
else
cout<<(float)s/m;
return 0;
}

Problema 33

Autor
Raluca Costineanu, prof. grad II
Colegiul Național „Ștefan cel Mare” Suceava
Enunţ
Scrieţi un program C/C++ care citeşte din fișierul ”date.in” un număr natural n
(1≤n≤50), elementele unei matrice cu n linii şi n coloane, numere naturale din
intervalul [0,99999] şi afişează pe ecran numărul elementelor palindrom ale
matricei, care sunt situate deasupra diagonalei secundare. Dacă nu există
elemente palindrom situate deasupra diagonalei secundare, programul va afişa
mesajul „Nu exista!”.
Un număr natural este palindrom dacă numărul citit de la stânga la dreapta este
același cu numărul citit de la dreapta la stânga.

Exemplu: pentru n=4 şi matricea de mai jos se afişează valoarea 4.


112 121 444 56
102 696 123 17
262 413 221 10
393 585 111 33

Descriere soluţie
Se citesc datele de intrare din fișier, se determină numărul elementelor
palindrom situate deasupra diagonalei secundare. Se afişează rezultatul.
Pentru a verifica dacă un element este palindrom se utilizează funcția palindrom
care primește ca parametru un număr natural și returnează 1 dacă numărul este
palindrom și 0 în caz contrar.
57
Probleme pentru ATESTAT 2013

Sursă C++
#include<iostream>
#include<fstream>
using namespace std;

int palindrom(unsigned nr)


{
unsigned ogl=0, copie=nr;
while(copie>0)
{
ogl=ogl*10+copie%10;
copie/=10;
}
if(ogl==nr)
return 1;
return 0;
}
int main()
{
int a[51][51], n, m=0, i, j;
ifstream f("date.in");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
f.close();
for(i=1;i<n;i++)
for(j=1;j<=n-i;j++)
if(palindrom(a[i][j]))
m++;
if(!m)
cout<<"Nu exista!";
else
cout<<m;
return 0;
}

58
Probleme pentru ATESTAT 2013

Problema 34

Autor
Raluca Costineanu, prof. grad II
Colegiul Național „Ștefan cel Mare” Suceava
Enunţ
Scrieţi un program C/C++ care citeşte din fișierul ”date.in” un număr natural n
(1≤n≤100), un număr natural m (1≤m≤10) și elementele unei matrice cu n linii
şi m coloane, cifre binare, fiecare linie a tabloului reprezintă cifrele unui număr
în baza 2. Să se afişeze pe linii separate ale ecranuluinumerele care se obțin prin
transformarea fiecărei linii din matrice în numărul corespunzător în baza 10.

Exemplu: Dacă fișierul conține


37
1111001
1010101
1000110
Atunci se va afișa:
121
85
70

Descriere soluţie
Se citesc datele de intrare din fișier și pentru fiecare linie a matricii se
determină, folosind apeluri utile ale funcției transforma, numărul în baza 10
care se formeaza cu cifrele reținute e linia respectivă.

Sursă C++
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;

int transforma(int v[], int n)


{
int nr=0, i;
for(i=1;i<=n;i++)
nr=nr+v[i]*pow(2,n-i);
return nr;
59
Probleme pentru ATESTAT 2013

int main()
{
int a[101][11], n, m, i, j;
ifstream f("date.in");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
f.close();
for(i=1;i<=n;i++)
cout<<transforma(a[i],m)<<'\n';
return 0;
}

60
Probleme pentru ATESTAT 2013

BAZE DE DATE

Subiect nr. 1
La un centru de sănătate evidenţa consultaţiilor este ţinută cu ajutorul
unui sistem informatic care are la bază două entităţi: PACIENT şi
CONSULTAŢIE. Pentru fiecare consultaţie se reţine cnp-ul pacientului, data
consultaţiei, numele medicului care efectuează consultaţia, specialitatea şi
preţul. Opţional, dacă pacientul a fost diagnosticat cu o boală, se va reţine şi
această informaţie. ERD-ul pentru aplicaţie este următorul:
CONSULTATIE
PACIENT #id
#cnp_p Primeşte *data_consult
*nume *medic
*data_nasterii *specialitate
Este pentru
*sex * pret
o diagnostic

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi alfabetic medicii care au efectuat consultaţii pe 1.XII.2012 . Se
va afişa şi specialitatea medicului.
c) Care este suma plătită la centrul de sănătate de pacientul Georgescu
Paul de-a lungul timpului?

Tabela PACIENTI
CNP_P NUME DATA_NASTERII SEX
2921904555777 Grig Adela 19-03-1990 F
2890207555777 Alexa Mara 22-05-1989 F
2910410555777 Darie Ada 02-02-1991 F
1892411555777 Vlad Cristi 27-11-1988 B
2902512555777 Pop Ana 12-05-1990 F
1911708555777 Georgescu Paul 11-07-1992 B

61
Probleme pentru ATESTAT 2013

Tabela CONSULTATII
I CNP_PACIE DATA_CONS MEDI SPECIALIT PRE DIAGNOS
D NT ULT C ATE T TIC
290251255577 Filip
11 04-04-2009 generalist 130 diabet
7 Dan
189241155577 Zota
12 12-03-2010 dentar 110 -
7 Ana
191170855577 Popesc
13 01-12-2012 generalist 75 obezitate
7 u Ion
191170855577 Zota
14 05-10-2010 dentar 130 -
7 Ana
292190455577 Zota
15 15-02-2010 dentar 120 -
7 Ana
289020755577 Zota
16 01-12-2012 dentar 90 -
7 Ana

Cerința b:
MEDIC SPECIALITATE
Popescu Ion generalist
Zota Ana dentar

Cerința c:
Suma platita
205

Rezolvare:
Cerința a:
- crearea tabelei PACIENTI:
CREATE TABLE PACIENTI
(
CNP_P NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(100)NOT NULL,
DATA_NASTERII DATENOT NULL,
SEX VARCHAR2(1)NOT NULL
);

- popularea tabelei PACIENTI:


INSERT INTO PACIENTI
VALUES(:CNP_P, :NUME, :DATA_NASTERII, :SEX)

- crearea tabelei CONSULTATII:


CREATE TABLE CONSULTATII

62
Probleme pentru ATESTAT 2013

(
ID INTEGER PRIMARY KEY,
CNP_PACIENT NUMBER(13) REFERENCES PACIENTI(CNP_P),
DATA_CONSULT DATE NOT NULL,
MEDIC VARCHAR2(100) NOT NULL,
SPECIALITATE VARCHAR2(50) NOT NULL,
PRET NUMBER(8) NOT NULL,
DIAGNOSTIC VARCHAR2(100)
);

- popularea tabelei CONSULTATII:


INSERT INTO CONSULTATII
VALUES(:ID, :CNP_PACIENT, :DATA_CONSULT, :MEDIC, :SPECIALITATE,
:PRET, :DIAGNOSTIC)

Cerinţa b:
SELECT MEDIC, SPECIALITATE
FROM CONSULTATII
WHERE DATA_CONSULT = '1-12-2012'
ORDER BY MEDIC;

Cerinţa c:
SELECT SUM(PRET)
FROM PACIENTI INNER JOIN CONSULTATII ON PACIENTI.CNP_P =
CONSULTATII.CNP_PACIENT
WHERE UPPER(NUME) = 'GEORGESCU PAUL';

Subiect nr.2
O agenţie de turism ţine evidenţa clienţilor şi a destinaţiilor de vacanţă
folosind entităţile: DESTINAŢIE şi CLIENT conform ERD-ului de mai jos.

CLIENT
DESTINAŢIE #id
#id este aleasa de *nume
*numeD *prenume
* preţ *adresa
alege
o telefon

Cerinţe:

63
Probleme pentru ATESTAT 2013

a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate


în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi alfabetic clienţii care işi vor petrece vacanţa la Viena.
c) Să se afişeze cea mai scumpă şi cea mai ieftină destinaţie.

Tabela DESTINAŢII
Id NUMED PREŢ
1 Viena 110
2 Paris 230
3 Budapesta 50
4 New York 600
5 Londra 400

Tabela CLIENŢI
IDD IDC NUME PRENUME ADRESA TELEFON
1 11 POP INA IAŞI 0744123567
2 22 DASCAL GINA DEVA 0744123566
2 33 MIRON DANA CLUJ 0744123565
3 44 MIRON DAN CLUJ 0744123564
4 55 CARP VLAD BACĂU 0744123563
5 66 POPA ANA BACĂU 0744123562
1 77 POP ION IAŞI 0744123561
1 88 AVRAM ANCA CLUJ 0744123560

Cerința b:
NUME PRENUME
AVRAM ANCA
POP INA
POP ION

Cerința c:
NUMED
Budapesta
New York

Rezolvare:
Cerința a:
- crearea tabelei DESTINATII:

64
Probleme pentru ATESTAT 2013

CREATE TABLE DESTINATII


(
ID INTEGER PRIMARY KEY,
NUMED VARCHAR2(100) NOT NULL,
PRET NUMBER(8) NOT NULL
);

- popularea tabelei DESTINATII:


INSERT INTO DESTINATII
VALUES(:ID, :NUMED, :PRET)

- crearea tabelei CLIENTI:


CREATE TABLE CLIENTI
(
ID INTEGER PRIMARY KEY,
ID_DESTINATIE INTEGER REFERENCES DESTINATII(ID),
NUME VARCHAR2(50) NOT NULL,
PRENUME VARCHAR2(50) NOT NULL,
ADRESA VARCHAR2(200) NOT NULL,
TELEFON VARCHAR2(10)
);

- popularea tabelei CLIENTI:


INSERT INTO CLIENTI
VALUES(:ID, :ID_DESTINATIE, :NUME, :PRENUME, :ADRESA, :TELEFON)

Cerința b:
SELECT NUME, PRENUME
FROM DESTINATII INNER JOIN CLIENTI ON DESTINATII.ID = CLIENTI.IDD
WHERE UPPER(DESTINATII.NUMED) = 'VIENA'
ORDER BY NUME, PRENUME;

Cerința c:
SELECT NUMED FROM DESTINATII WHERE PRET = (SELECT MAX(PRET) FROM
DESTINATII)
UNION
SELECT NUMED FROM DESTINATII WHERE PRET = (SELECT MIN(PRET) FROM
DESTINATII);

Subiect nr. 3
Firma ROMTEL oferă servicii de telefonie, televiziune şi internet, pe
bază de abonament. La departamentul de intervenţii se ţine evidenţa tuturor
abonaţilor firmei şi a intervenţiilor. Fiecare defecţiune semnalatăareun termen
limită de rezolvare exprimat în zile.

65
Probleme pentru ATESTAT 2013

INTERVENŢIE
ABONAT #id
#cnp solicită * tip intervenţie
*nume * data înregistrării
* prenume * termen limită
corespunde
* stare

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Să se afişeze alfabetic abonaţii care au solicitat intervenţii în data
de 1 ianuarie 2013.
c) Afişaţidata înregistrării intervenţiilor care au termenul limită
depăşit?

Tabela ABONAŢI
CNP NUME PRENUME
2921904555777 Grig Adela
2890207555777 Alexa Mara
2910410555777 Darie Ada
1892411555777 Vlad Cristi
2902512555777 Pop Ana

Tabela INTERVENŢII
DATA TERMEN STARE
IDI CNP TIP
INREGISTRĂRII LIMITĂ
1. 2921904555777 deranjament 04-04-2013 2 nefectuat
2. 2890207555777 Instalare 12-03-2012 3 efectuat
3. 2910410555777 deranjament 01-12-2012 2 efectuat
4. 1892411555777 Mutare 05-11-2012 2 efectuat
5. 2902512555777 Instalare 15-02-2013 3 efectuat
6. 2890207555777 deranjament 01-01-2013 4 efectuat
7. 2921904555777 deranjament 01-01-2013 4 efectuat
8. 2902512555777 deranjament 21-12-2012 2 nefectuat

66
Probleme pentru ATESTAT 2013

Cerința b:
NUME PRENUME
Alexa Mara
Grig Adela

Cerința c:
DATA INREGISTRĂRII
04-04-2013
21-12-2012

Rezolvare:
Cerinţa a:
- crearea tabelei ABONATI:
CREATE TABLE ABONATI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(50) NOT NULL,
PRENUME VARCHAR2(50) NOT NULL
);

- popularea tabelei ABONATI:


INSERT INTO ABONATI
VALUES(:CNP, :NUME, :PRENUME);

- crearea tabelei INTERVENTII:


CREATE TABLE INTERVENTII
(
IDINTEGER PRIMARY KEY,
CNP NUMBER(13) REFERENCES ABONATI(CNP),
TIP VARCHAR2(15) NOT NULL,
DATA_INREGISTRARII DATE NOT NULL,
TERMEN_LIMITA NUMBER(3) NOT NULL,
STARE VARCHAR2(10) NOT NULL
);

- popularea tabelei ANIMALE:


INSERT INTO INTERVENTII
VALUES(:ID, :CNP, :TIP, :DATA_INREGISTRARII, :TERMEN_LIMITA, :STARE);

Cerința b:
SELECT NUME, PRENUME
FROM ABONATI INNER JOIN INTERVENTII ON ABONATI.CNP =
INTERVENTII.CNP
WHERE DATA_INREGISTRARII = '01-01-2013'
ORDER BY NUME, PRENUME;
67
Probleme pentru ATESTAT 2013

Cerința c:
SELECT DATA_INREGISTRARII
FROM INTERVENTII
WHERE SYSDATE < DATA_INREGISTRARII + TERMEN_LIMITA AND
UPPER(STARE) = 'NEEFECTUAT';

Subiect nr. 4
Pentru filmele ce vor fi rulate la un festival cinematografic se reţin:
numele şi data lansării.Pentru fiecare actor se va reţine numele, data naşterii şi
id-ul filmului.

ACTOR
FILM #ida
are în rolul principal
df * nume_artist
*nume * naţionalitate
* data_lansării
joacă în

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Să se afişeze cel mai vechi film şi actorii care au jucat în acesta.
c) Pentru actorul “Florin Piersic” să se afişeze toate informaţiile
deţinute precum şi toate filmele în care joacă.

Tabela FILME
ID NUME DATA LANSĂRII
1 KING-KONG 04-04-2008
2 PE ARIPILE VÂNTULUI 12-03-1950
3 FRAŢII JDERI 01-12-1965
4 MĂRGELATU 05-11-1983
5 VERONICA 15-02-1977

Tabela ACTORI
IDF IDA NUME_ARTIST NAŢIONALITATE
1 11 Fay Wray Americană

68
Probleme pentru ATESTAT 2013

2 22 Vivien Leigh Americană


3 33 Florin Piersic Română
1 44 Bill Williams Americană
4 33 Florin Piersic Română
5 55 Margareta Pislaru Română
4 66 Mircea Diaconu Română
2 77 Clark Gable Americană

Cerința b:
NUME NUME_ARTIST
PE ARIPILE VÂNTULUI Vivien Leigh
PE ARIPILE VÂNTULUI Clark Gable

Cerința c:
NUME_ARTIST NAŢIONALITATE NUME DATA LANSĂRII
Florin Piersic Română FRAŢII JDERI 01-12-1965
Florin Piersic Română MĂRGELATU 05-11-1983

Rezolvare:
Cerinţa a:
- crearea tabelei FILME:
CREATE TABLE FILME
(
IDF NUMBER(3) PRIMARY KEY,
NUME VARCHAR2(30) NOT NULL,
DATA_LANSARII DATE NOT NULL
);

- popularea tabelei FILME:


INSERT INTO FILME
VALUES(:IDF, :NUME, :DATA_LANSARII);

- crearea tabelei ACTORI:


CREATE TABLE ACTORI
(
IDA NUMBER(3) PRIMARY KEY,
NUME_ARTIST VARCHAR2(50) NOT NULL,
NATIONALITATE VARCHAR2(20) NOT NULL,
IDF NUMBER(3) REFERENCES FILME(IDF)
);

- popularea tabelei ACTORI:

69
Probleme pentru ATESTAT 2013

INSERT INTO ACTORI


VALUES(:IDA, :NUME, :NATIONALITATE, :IDF);

Cerinţa b:
SELECT NUME, NUME_ARTIST
FROM FILME INNER JOIN ACTORI ON FILME.IDF = ACTORI.IDF
WHERE DATA_LANSARII = (SELECT MIN(DATA_LANSARII) FROM FILME);

Cerinţa c:
SELECT NUME_ARTIST, NATIONALITATE, NUME, DATA_LANSARII
FROM FILME INNER JOIN ACTORI ON FILME.IDF = ACTORI.IDF
WHERE UPPER(NUME_ARTIST) = 'FLORIN PIERSIC';

Subiect nr. 5
La Campionatul Naţional al cainilor de rasă participa mai mulţi câini
împreună cu stăpânii lor. Pentru fiecare stapân se cunoaşte numele şi adresa iar
pentru fiecare câine numele şi premiul obţinut(1,2,3=premiu, 0=fără premiu)

CÂINE
STAPÂN #id
#cnp are
* nume_câine
*nume * premiu
* adresa
aparţine

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Pentru stăpânul “Cristinel” să se afişeze toate informaţiile
deţinute precum şi toţi câinii cu care a participat la campionat şi
premiile obţinute de aceştia.
c) Să se afişeze lista câiniloralfabetic după premii, împreună cu
numele stăpânilor.
9
Tabela STĂPÂNI
CNP NUME ADRESA
9
2921904555777 Grig Adelina Cluj
2890207555777 Alexa Mara Brasov

70
Probleme pentru ATESTAT 2013

2910410555777 Darie Ada Bacău


1892411555777 Vladoi Cristinel Bucureşti
2902512555777 Pop Ana Iaşi
1911708555777 Antonescu Paul Bucureşti

Tabela CÂINI
ID CNP NUME_CÂINE PREMIU
1 2921904555777 Fay 1
2 2890207555777 Dino 2
3 2910410555777 Figaro 1
4 1892411555777 Lord 3
5 2902512555777 Mozart 3
6 1911708555777 Niko 2
7 2921904555777 Oscar 0
8 1892411555777 Spot 2

Cerința b:
CNP NUME ADRESA NUME_CÂINE PREMIU
1892411555777 Vladoi Cristinel Bucureşti Lord 3
1892411555777 Vladoi Cristinel Bucureşti Spot 2

Cerința c:
NUME_CÂINE PREMIU NUME
Oscar 0 Grig Adelina
Fay 1 Grig Adelina
Figaro 1 Darie Ada
Dino 2 Alexa Mara
Niko 2 Antonescu Paul
Spot 2 Vladoi Cristinel
Lord 3 Vladoi Cristinel
Mozart 3 Pop Ana

Rezolvare:
Cerința a:
- crearea tabelei STAPANI:
CREATE TABLE STAPANI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(50) NOT NULL,
ADRESA VARCHAR2(150) NOT NULL
);

- popularea tabelei STAPANI:


INSERT INTO STAPANI
VALUES(:CNP, :NUME, :ADRESA);

71
Probleme pentru ATESTAT 2013

- crearea tabelei CAINI:


CREATE TABLE CAINI
(
ID NUMBER(3) PRIMARY KEY,
NUME_CAINE VARCHAR2(15) NOT NULL,
PREMIU NUMBER(1) NOT NULL,
CNP NUMBER(13) REFERENCES STAPANI(CNP)
);

- popularea tabelei ANIMALE:


INSERT INTO CAINI
VALUES(:ID, :NUME_CAINE, :PREMIU, :CNP);

Cerința b:
SELECT STAPANI.CNP, NUME, ADRESA, NUME_CAINE, PREMIU
FROM STAPANI INNER JOIN CAINI ON STAPANI.CNP = CAINI.CNP
WHERE UPPER(NUME) LIKE '%CRISTINEL%';

Cerința c:
SELECT NUME_CAINE, PREMIU, NUME
FROM STAPANI INNER JOIN CAINI ON STAPANI.CNP = CAINI.CNP
ORDER BY PREMIU ASC, NUME_CAINE ASC;

Subiect nr. 6
La Grădina Zoologică sunt mai multe animale de specii diferite.Pentru
fiecare animal se cunoaşte numele şi data naşterii iar pentru fiecare
speciedenumirea şi caracteristicasa.

ANIMAL
SPECIE #ida
#ids este reprezentată de
*nume
* denumire * data_naşterii
o caracteristici aparţine

Cerinţe:
a

72
9
Probleme pentru ATESTAT 2013

a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile


reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Care este cel mai bâtrân animal din grădina zoologică și din ce
specie face parte?
c) Să se afişeze toate animalele alfabetic pe specii.

Tabela SPECII
IDS DENUMIRE CARACTERISTICI
1 ovine corp acoperit de blană
2 marsupiale prezența unei pungi, numită marsupiu
3 cabaline erbivor, marime considerabila

Tabela ANIMALE
DATA_NAŞTER
IDA IDS NUME
II
11 1 Oaie 04-04-2008
22 2 Cangur 12-02-2007
33 2 urs koala 01-12-2007
44 3 Cal 05-11-2008
55 1 Capra 15-02-2009
66 3 Iapa 03-05-2008
77 2 lupul marsupial 12-03-2007

Cerința b:
DATA_NAŞTE
NUME RII DENUMIRE
cangur 12-02-2007 marsupiale

Cerința c:
DENUMIRE NUME
cabaline cal
cabaline iapa
marsupiale cangur
marsupiale lupul marsupial
marsupiale urs koala
ovine capra
ovine oaie

Rezolvare:
Cerința a:
- crearea tabelei SPECII:
CREATE TABLE SPECII
73
Probleme pentru ATESTAT 2013

(
IDS NUMBER(3) PRIMARY KEY,
DENUMIRE VARCHAR2(35) NOT NULL,
CARACTERISTICI VARCHAR2(200)
);

- popularea tabelei SPECII:


INSERT INTO SPECII
VALUES(:IDS, :DENUMIRE, :CARACTERISTICI);

- crearea tabelei ANIMALE:


CREATE TABLE ANIMALE
(
IDA NUMBER(3) PRIMARY KEY,
NUME VARCHAR2(15) NOT NULL,
DATA_NASTERII DATE NOT NULL,
IDS NUMBER(3) REFERENCES SPECII(IDS)
);

- popularea tabelei ANIMALE:


INSERT INTO ANIMALE
VALUES(:IDA, :NUME, :DATA_NASTERII, :IDS);

Cerința b:
SELECT NUME, DATA_NASTERII, DENUMIRE
FROM SPECII INNER JOIN ANIMALE ON SPECII.IDS = ANIMALE.IDS
WHERE DATA_NASTERII = (SELECT MIN(DATA_NASTERII) FROM ANIMALE);

Cerința c:
SELECT DENUMIRE, NUME
FROM SPECII INNER JOIN ANIMALE ON SPECII.IDS = ANIMALE.IDS
ORDER BY DENUMIRE ASC, NUME ASC;

Subiect nr.7
În cadrul concursului regional „Îmi place geografia” elevii de gimnaziu
trebuie să enumere cât mai multe ţări şi oraşe din aceste ţări. Fiecare ţară este
identificată prin nume şi capitală iar oraşele prin nume şi populaţie.

74
Probleme pentru ATESTAT 2013

ORAŞ
ŢARĂ #cod_o
are
#cod_t * nume_o
*denumire * populaţie
* capitala
aparţine

Cerinţe:
a a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Să se afişeze ţările alfabetic şipentru fiecare ţarăoraşele cele mai
populate.
c) Să se afişeze datele oraşelor cu populaţia minimă şi maximă.
Tabela ŢĂRI 9
COD_T DENUMIRE CAPITALA
11 China Beijing
22 Cehia Praga
9
33 Egipt Cairo
44 Franţa Paris
55 Grecia Atena

Tabela ORAŞE
COD_O COD_T NUME_O POPULAŢIE
1 11 Tianjin 7200000
2 11 Guangzhou 11810000
3 22 Ostrava 311402
4 22 Brno 367729
5 33 Beheira 5327000
6 33 Giza 3258540
7 44 Avignon 88312
8 44 Bordeaux 218948
9 44 Lyon 453187
10 55 Salonic 800764
11 55 Tripolis 28928

Cerința b:
DENUMIRE NUME_O POPULAŢIE
Cehia Brno 367 729
China Guangzhou 11810000
Egipt Beheira 5327000
Franţa Lyon 453 187
Grecia Salonic 800764

75
Probleme pentru ATESTAT 2013

Cerința c:
DENUMIRE CAPITALĂ NUME_O POPULAŢIE
Grecia Atena Tripolis 28928
China Beijing Guangzhou 11810000

Rezolvare:
Cerinţa a:

- crearea tabelei TARI:


CREATE TABLE TARI
(
COD_T NUMBER(3) PRIMARY KEY,
DENUMIRE VARCHAR2(20) NOT NULL,
CAPITALA VARCHAR2(20) NOT NULL
);

- popularea tabelei TARI:


INSERT INTO TARI
VALUES(:COD_T, :DENUMIRE, :CAPITALA);

- crearea tabelei ORASE:


CREATE TABLE ORASE
(
COD_O NUMBER(3) PRIMARY KEY,
NUME_O VARCHAR2(15) NOT NULL,
POPULATIE NUMBER(10),
COD_T NUMBER(3) REFERENCES TARI(COD_T)
);

- popularea tabelei ORASE:


INSERT INTO ORASE
VALUES(:COD_O, :NUME_O, :POPULATIE, :COD_T);

Cerința b:
SELECT A.DENUMIRE, A.NUME_O, A.POPULATIE FROM
(SELECT TARI.COD_T, DENUMIRE, NUME_O, POPULATIE
FROM TARI INNER JOIN ORASE ON TARI.COD_T = ORASE.COD_T) A
INNER JOIN
(SELECT TARI.COD_T, MAX(POPULATIE) AS POPULATIE
FROM TARI INNER JOIN ORASE ON TARI.COD_T = ORASE.COD_T
GROUP BY COD_T) B
ON A.COD_T = B.COD_T AND A.POPULATIE = B.POPULATIE;

Cerința c:
SELECT DENUMIRE, CAPITALA, NUME_O, POPULATIE
FROM TARI INNER JOIN ORASE ON TARI.COD_T = ORASE.COD_T
WHERE POPULATIE = (SELECT MIN(POPULATIE) FROM ORASE)
76
Probleme pentru ATESTAT 2013

UNION
SELECT DENUMIRE, CAPITALA, NUME_O, POPULATIE
FROM TARI INNER JOIN ORASE ON TARI.COD_T = ORASE.COD_T
WHERE POPULATIE = (SELECT MAX(POPULATIE) FROM ORASE);

Subiect nr.8
O agenţie de publicitate realizează reclame pentru diverşi clienţi.
Evidenţa clienţilor şi a reclamelor este realizată cu ajutorul entităţilor CLIENT
şi RECLAMA conform ERD-ului de mai jos:
RECLAMA
CLIENT #idr
comandă
#idc * denumire
* nume * durata
* prenume (exprimată în
este comandată
* adresa minute)
* nr_de_difuzări
* tarif/minut

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Să se afişeze pentru fiecare client reclamele comandate. Clienţii
vor fi afişaţi alfabetic.
c) Afişaţi numele şi prenumele clientului care a comandat reclama
cu un număr maxim de difuzări.

Tabela CLIENŢI
IDC NUME PRENUME ADRESA
1 POP INA IAŞI
2 DASCAL GINA DEVA
3 MIRON DANA CLUJ
4 MIRON DAN CLUJ
5 CARP VLAD BACĂU
6 POPA ANA BACĂU

Tabela RECLAME
IDC IDR DENUMIRE DURATA NR_DIFUZĂRI TARIF
1 11 COCA-COLA 2 4 200
2 22 LENOR 1 2 150

77
Probleme pentru ATESTAT 2013

2 33 ARIEL 1 2 140
4 44 ORANGE 2 3 220
5 55 URSUS 1 1 123
3 66 COLGATE 1 1 125
6 77 POIANA 2 1 100
5 88 CIUC 1 1 130

Cerința b:
IDC NUME PRENUME ADRESA DENUMIRE
5 CARP VLAD BACĂU URSUS
5 CARP VLAD BACĂU CIUC
2 DASCAL GINA DEVA LENOR
2 DASCAL GINA DEVA ARIEL
4 MIRON DAN CLUJ ORANGE
3 MIRON DANA CLUJ COLGATE
1 POP INA IAŞI COCA-COLA
6 POPA ANA BACĂU POIANA
Cerința c:
NUME PRENUME ADRESA

POP INA IAŞI

Rezolvare:
Cerința a:
- crearea tabelei CLIENTI:
CREATE TABLE CLIENTI
(
IDC NUMBER(3) PRIMARY KEY,
NUME VARCHAR2(50) NOT NULL,
PRENUME VARCHAR2(50) NOT NULL,
ADRESA VARCHAR2(150) NOT NULL
);

- popularea tabelei CLIENTI:


INSERT INTO CLIENTI
VALUES( :IDC, :NUME, :PRENUME, :ADRESA);

- crearea tabelei RECLAME:


CREATE TABLE RECLAME
(
IDR NUMBER(3) PRIMARY KEY,
DENUMIRE VARCHAR2(50) NOT NULL,
DURATA NUMBER(2) NOT NULL,
78
Probleme pentru ATESTAT 2013

NR_DE_DIFUZARI NUMBER(2) NOT NULL,


TARIF NUMBER(4) NOT NULL,
IDC NUMBER(3) REFERENCES CLIENTI(IDC)
);

- popularea tabelei RECLAME:


INSERT INTO RECLAME
VALUES(:IDR, :DENUMIRE, :DURATA, :NR_DIFUZARI, :TARIF, :IDC);

Cerința b:
SELECT IDC, NUME, PRENUME, ADRESA, DENUMIRE
FROM CLIENTI INNER JOIN RECLAME ON CLIENTI.IDC = RECLAME.IDC
ORDER BY NUME ASC, PRENUME ASC;

Cerința c:
SELECT NUME, PRENUME, ADRESA
FROM CLIENTI INNER JOIN RECLAME ON CLIENTI.IDC = RECLAME.IDC
WHERE NR_DIFUZARI = (SELECT MAX(NR_DIFUZARI) FROM RECLAME);

Subiect nr. 9
O firmă de transporturi auto doreşte să ţină evidenţa maşinilor şi
curselor efectuate cu ajutorul unei baze de date. În urma discuţiilor cu
managerul firmei s-a obţinut următorul ERD.

CURSA
MAŞINA #idc
efectuează
#idm * destinaţie
* marca * data plecării
* nr_locuri * ora plecării
este făcută de
*nr_înmatriculare * data întoarcerii

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Să se afişeze numerele de înmatriculare ale maşinilor care
efectuează curse ce durează mai mult de o zi.
c) Câte persoane ar putea fi transportate cu maşinile care pleacă în
cursă pe 1 mai 2013?

79
Probleme pentru ATESTAT 2013

Tabela MAŞINI
IDM MARCA NR_LOCURI NR_ÎNMATRICULARE
1 RENAULT 18 SV-09-ABC
2 MERCEDES 12 SV-02-FGH
3 VW 8 SV-03-IJK
4 MERCEDES 18 B-100-ION
5 FORD 20 B-102-LIC

Tabela CURSE
IDC IDM DESTINAŢIE DATA ORA DATA
PLECĂRII PLECĂRII ÎNTOARCERII

11 1 BUCUREŞTI 03.03.2013 10 04.03.2013


22 2 IAŞI 03.02.2013 10 03.02.2013
33 3 CLUJ 01.04.2013 11 03.04.2013
44 1 IAŞI 01.05.2013 15 01.05.2013
55 4 BUCUREŞTI 01.05.2013 6 02.05.2013
66 5 TIMIŞOARA 15.04.2013 8 17.04.2013
77 1 CLUJ 10.04.2013 10 11.04.2013
88 5 CLUJ 20.03.2013 22 22.03.2013

Cerința b:
NR_ÎNMATRICULARE
SV-03-IJK
B-102-LIC

Cerința c:
NUMĂR DE
PERSOANE

36

Rezolvare:
Cerința a:
- crearea tabelei MASINI:
CREATE TABLE MASINI
(
IDM NUMBER(3) PRIMARY KEY,
MARCA VARCHAR2(10) NOT NULL,
NR_LOCURI NUMBER(2) NOT NULL,
NR_INMATRICULARE VARCHAR2(9) NOT NULL
);

80
Probleme pentru ATESTAT 2013

- popularea tabelei MASINI:


INSERT INTO MASINI
VALUES(:IDM, :MARCA, :NR_LOCURI, :NR_INMATRICULARE);

- crearea tabelei CURSE:


CREATE TABLE CURSE
(
IDC NUMBER(3) PRIMARY KEY,
DESTINATIE VARCHAR2(15) NOT NULL,
DATA_PLECARII DATE NOT NULL,
ORA_PLECARII NUMBER(2) NOT NULL,
DATA_INTOARCERII DATE NOT NULL,
IDM NUMBER(3) REFERENCES MASINI(IDM)
);
- popularea tabelei CURSE:
INSERT INTO animaleCURSE
VALUES(:IDC, :DESTINATIE, :DATA_PLECARII, :ORA_PLECARII,
DATA_INTOARCERII, :IDM);

Cerința b:
SELECT NR_INMATRICULARE
FROM MASINI INNER JOIN CURSE ON MASINI.IDM = CURSE.IDM
WHERE DATA_INTOARCERII – DATA_PLECARII > 1;

Cerința c:
SELECT SUM(NR_LOCURI) AS NUMAR
FROM MASINI INNER JOIN CURSE ON MASINI.IDM = CURSE.IDM
WHERE DATA_PLECARII = '1-05-2013';

Subiect nr.10
La librăria şcolii se găsesc cărţi apărute la mai multe edituri. Pentru o
mai bună gestionare a acestora se folosesc entităţile EDITURA şi CARTE
conform ERD-ului de mai jos:
CARTE
EDITURA #idc
publică
#cod * titlu
* nume * autor
* adresa * pret
o telefon
este publicată de

81
Probleme pentru ATESTAT 2013

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Afişaţi cărţile apărute la editura Nemira ordonate alfabetic.
c) Care este valoarea cărţilor scrise de Ion Creangă?

Tabela EDITURI
COD NUME ADRESA TELEFON
1 NEMIRA 1 Mai, 40, Bucureşti 0744123567
Calea Unirii 23,
2 NICULESCU 0744123566
Bucureşti
Calea Unirii 67,
3 ALL 0744123565
Bucureşti
4 ERC PRESS Florilor 1, Bucureşti 0744123564
Pandurilor 67,
5 PETRION 0744123563
Bucureşti

Tabela CĂRŢI
COD IDC TITLU AUTOR PREŢ

1 11 ION ION REBREANU 29


2 22 MARA IOAN SLAVICI 31
3 33 POVEŞTI ION CREANGĂ 19
4 44 POEZII MIHAI EMINESCU 15
AMINTIRI DIN
5 55 ION CREANGĂ 22
COPILĂRIE
2 66 POEZII GEORGE COŞBUC 19
IONEL
1 77 LORELEI 20
TEODOREANU
DUMBRAVA MIHAIL
5 88 18
MINUNATĂ SADOVEANU

Cerința b:
TITLU AUTOR PREŢ

ION ION REBREANU 29


LORELEI IONEL TEODOREANU 20

Cerința c:
VALOARE

82
Probleme pentru ATESTAT 2013

41
Rezolvare:
Cerința a:
- crearea tabelei EDITURI:
CREATE TABLE EDITURI
(
COD NUMBER(3) PRIMARY KEY,
NUME VARCHAR2(30) NOT NULL,
ADRESAVARCHAR2(200) NOT NULL,
TELEFON VARCHAR2(10)
);

- popularea tabelei EDITURI:


INSERT INTO EDITURI
VALUES(:COD, :NUME, :ADRESA, :TELEFON);

- crearea tabelei CARTI:


CREATE TABLE CARTI
(
IDC NUMBER(3) PRIMARY KEY,
TITLU VARCHAR2(50) NOT NULL,
AUTOR VARCHAR2(50) NOT NULL,
PRETNUMBER(4) NOT NULL,
COD NUMBER(3) REFERENCES EDITURI(COD)
);

- popularea tabelei CARTI:


INSERT INTO CARTI
VALUES(:IDC, :TITLU, :AUTOR, :PRET, :COD);

Cerința b:
SELECT TITLU, AUTOR, PRET
FROM EDITURI INNER JOIN CARTI ON EDITURI.COD = CARTI.COD
WHERE UPPER(NUME) = 'NEMIRA'
ORDER BY TITLU ASC, AUTOR ASC;

Cerința c:
SELECT SUM(PRET) AS VALOARE
FROM CARTI
WHERE UPPER(AUTOR) = 'ION CREANGA';

83
Probleme pentru ATESTAT 2013

Subiect nr. 11
Managerul societăţii „ABC” doreşte să afle informaţii legate de
angajaţii săi. În cadrul societăţii există mai multe departamente fiecare
departament având un coordonator. Pentru o mai bună evidenţă a acestora se
folosesc entităţile DEPARTAMENT şi ANGAJAT conform ERD-ului de mai
jos.

ANGAJAT
DEPARTAMENT #CNP
lucrează la
#cod * nume şi prenume
* denumire * funcţia
are * salar

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Să se afişeze lista departamentelor cu şefii acestora(se va afişa
denumirea departamentului şi numele coordonatorului).
c) Să se afişeze numărul de angajaţi din fiecare departament.

Tabela DEPARTAMENTE
COD DENUMIRE
1 CONTABILITATE
2 APROVIZIONARE
3 DESFACERE
4 TRANSPORTURI
5 PRODUCŢIE

Tabela ANGAJAŢI
CNP NUME ŞI FUNCŢIA SALAR COD_DEP
PRENUME ART

COORDONATOR
2921904555777 Grig Adelina 1800 5
DEPARTAMENT
2890207555777 Alexa Mara ECONOMIST 1500 2
COORDONATOR
2910410555777 Darie Ada 1800 3
DEPARTAMENT
1892411555777 Vladoi Cristinel INGINER 1602 5

84
Probleme pentru ATESTAT 2013

2902512555777 Pop Ana INGINER 1710 4


1911708555777 Antonescu Paul ECONOMIST 1403 1
COORDONATOR
2901907555777 Ionescu Ana 1800 1
DEPARTAMENT

2890909555777 Alex Dana INGINER 1653 5

COORDONATOR
1910210555777 Darie Mihai 1800 4
DEPARTAMENT

2882411555777 Vlad Cristina INGINER 1689 5


2922512555777 Radu Anda ECONOMIST 1500 3
COORDONATOR
1911709555777 Anton Mihai 1800 2
DEPARTAMENT

Cerința b:
COORDONATOR
DEPARTAMENT DEPARTAMENT
CONTABILITATE Ionescu Ana
APROVIZIONARE Anton Mihai
DESFACERE Darie Ada
TRANSPORTURI Darie Mihai
PRODUCŢIE Grig Adelina

Cerința c:
DEPARTAMENT NUMĂRUL DE ANGAJAŢI
CONTABILITATE 2
APROVIZIONARE 2
DESFACERE 2
TRANSPORTURI 2
PRODUCŢIE 4

Rezolvare:
Cerinta a:
- crearea tabelei DEPARTAMENTE:
CREATE TABLE DEPARTAMENTE
(
COD NUMBER(3) PRIMARY KEY,
DENUMIRE VARCHAR2(30) NOT NULL,
);

- popularea tabelei DEPARTAMENT:


INSERT INTO DEPARTAMENT
85
Probleme pentru ATESTAT 2013

VALUES(:COD, :DENUMIRE);

- crearea tabelei ANGAJATI:


CREATE TABLE ANGAJATI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(50) NOT NULL,
FUNCTIA VARCHAR2(20) NOT NULL,
SALARNUMBER(4) NOT NULL,
COD_DEPART NUMBER(3) REFERENCES DEPARTAMENTE(COD)
);

- popularea tabelei CARTI:


INSERT INTO ANGAJATI
VALUES(:CNP, :NUME, :FUNCTIA, :SALAR, :COD_DEPART);

Cerinţa b:
SELECT DENUMIRE AS DEPARTAMENT, NUME AS COORDONATOR
FROM DEPARTAMENTE INNER JOIN ANGAJATI ON DEPARTAMENTE.COD =
ANGAJATI.COD_DEPART
WHERE UPPER(FUNCTIA) = 'COORDONATOR DEPARTAMENT';

Cerința c:
SELECT DENUMIRE AS DEPARTAMENT, COUNT(*) AS NUMAR_ANGAJATI
FROM DEPARTAMENTE INNER JOIN ANGAJATI ON DEPARTAMENTE.COD =
ANGAJATI.COD_DEPART
GROUP BY DENUMIRE;

Subiect nr. 12
Pentru o mai bună evidenţă a elevilor şi personalului didactic dintr-o
unitate şcolară s-a hotărât crearea unei baze date date. În urma discuţiilor avute
cu directorul şcolii s-au construit entităţile DEPARTAMENT şi ANGAJAT
conform ERD-ului de mai jos.

ELEV
DIRIGINTE #CNP
îndrumă
#id_d * nume şi prenume
* nume * adresa
* prenume * media
este îndrumat de
* specialitate

Cerinţe:

86
Probleme pentru ATESTAT 2013

a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile


reprezentate în ERD. Populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.
b) Să se. afişeze numele diriginţilor a căror elevi au media 10. Se
va afişa numele elevului, numele dirigintelui şi specialitatea
dirigintelui.
c) Să se afişeze media generală a fiecăreiclase. Se va afişa numele
dirigintelui şi media generală a clasei.

Tabela DIRIGINŢI
ID_D NUME PRENUME SPECIALITATE
1 POP INA FIZICĂ
2 DASCAL GINA MATEMATICĂ
3 MIRON DANA CHIMIE
4 MIRON DAN INFORMATICĂ
5 CARP VLAD ISTORIE
6 POPA ANA BIOLOGIE

Tabela ELEVI
CNP NUME ŞI ADRESA MEDIA ID_D
PRENUME
2961904555777 Grig Adelina 1 Mai, 40, Bucureşti 9.40 5
2950207555777 Alexa Mara Calea Unirii 23, Bucureşti 10.00 2
2960410555777 Darie Ada Calea Unirii 67, Bucureşti 9.00 3
1972411555777 Vladoi Cristinel Florilor 1, Bucureşti 8.80 6
2962512555777 Pop Ana Pandurilor 67, Bucureşti 9.50 4
1971708555777 Antonescu Paul Calea Unirii 76, Bucureşti 10.00 1
2981907555777 Ionescu Ana Trandafirilor 1, Bucureşti 8.80 1
2980909555777 Alex Dana P. Rareş 67, Bucureşti 9.00 5
1990210555777 Darie Mihai 1 Mai, 46, Bucureşti 10.00 4
2972411555777 Vlad Cristina Calea Unirii 123, Bucureşti 8.90 6
2962512555777 Radu Anda 1 Mai, 489, Bucureşti 9.22 3
1951709555777 Anton Mihai Calea Unirii 237, Bucureşti 9.10 2

Cerința b:
NUMELE NUME PRENUME
SPECIALITATE
ELEVULUI DIRIGINTE DIRIGINTE
Alexa Mara DASCAL GINA MATEMATICĂ

87
Probleme pentru ATESTAT 2013

Antonescu Paul POP INA FIZICĂ


Darie Mihai MIRON DAN INFORMATICĂ

Cerința c:
ID_D NUME PRENUME MEDIA CLASEI
1 POP INA 9.40
2 DASCAL GINA 9.55
3 MIRON DANA 9.11
4 MIRON DAN 9.75
5 CARP VLAD 9.20
6 POPA ANA 8.85

Rezolvare:
Cerința a:
- crearea tabelei DIRIGINTI:
CREATE TABLE DIRIGINTI
(
ID_D INTEGER PRIMARY KEY,
NUME VARCHAR2(50) NOT NULL,
PRENUME VARCHAR2(50) NOT NULL,
SPECIALITATE VARCHAR2(50) NOT NULL);
- popularea tabelei DIRIGINTI:
INSERT INTO DIRIGINTI
VALUES(:ID_D, :NUME, :PRENUME, :SPECIALITATE);

- crearea tabelei ELEVI:


CREATE TABLE ELEVI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(100) NOT NULL,
ADRESA VARCHAR2(200) NOT NULL,
MEDIA NUMBER(4,2) NOT NULL,
ID_D INTEGER REFERENCES DIRIGINTI(ID_D)
);

- popularea tabelei ELEVI:


INSERT INTO ELEVI
VALUES(:CNP, :NUME, :ADRESA, :MEDIA, :ID_D);

Cerința b:
SELECT ELEVI.NUME AS "NUMELE ELEVULUI", DIRIGINTI.NUME AS "NUMELE
DIRIGINTELUI", PRENUME AS
"PRENUMELE DIRIGINTELUI", SPECIALITATE
FROM DIRIGINTI INNER JOIN ELEVI ON DIRIGINTI.ID_D = ELEVI.ID_D

88
Probleme pentru ATESTAT 2013

WHERE MEDIA = 10;

Cerința c:
SELECT A.ID_D, DIRIGINTI.NUME, DIRIGINTI.PRENUME, A."MEDIA CLASEI"
FROM
(SELECT ID_D, AVG(MEDIA) AS "MEDIA CLASEI" FROM ELEVI GROUP BY ID_D)
A
INNER JOIN DIRIGINTI ON A.ID_D = DIRIGINTI.ID_D;

Subiect nr. 13
O agenţie imobiliară ţine evidenţa clădirilor şi apartamentelor folosind
entităţile: CLĂDIRE şi APARTAMENT conform ERD-ului de mai jos.
APARTAMENT
CLĂDIRE #cod_ap
#cod_clădire are *nr_camere
*adresa *etaj
* nr_nivele o obs
se găseşte

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi apartamentele care se află în clădiri care au mai mult de 2 nivele.
c) Să se afişeze la ce adresă se găseşte apartamentul care are cele mai
multe camere.

Tabela CLĂDIRI

COD_CLĂDIRE ADRESA NR_NIVELE

1 1 Mai, 40, Bucureşti 1


2 Calea Unirii 23, Bucureşti 4
3 Calea Unirii 67, Bucureşti 2
4 Florilor 1, Bucureşti 3
5 Pandurilor 67, Bucureşti 2
Tabela APARTAMENTE

COD_ COD_APARTA NR_CAME ETAJ OBS


CLĂDIRE MENT -RE

89
Probleme pentru ATESTAT 2013

2 1 2 1 Are centrala
proprie
1 12 1 2
1 11 3 1

2 2 3 2 Reanovat

3 10 2 1 Are centrala
proprie
4 5 2 3
5 5 4 1 Renovat

3 3 1 1

Cerința b:
ADRESA COD_APARTAM NR_CAMER ETAJ OBS
ENT E
Calea Unirii 23, 1 2 1 Are centrala
Bucureşti proprie
Calea Unirii 23, 2 3 2 Reanovat
Bucureşti
Florilor 1, Bucureşti 5 2 3

Cerința c:
ADRESA
Pandurilor 67, Bucureşti

Rezolvare:
Cerința a:
- crearea tabelei CLADIRI:
CREATE TABLE CLADIRI
(
COD_CLADIRE INTEGER PRIMARY KEY,
ADRESA VARCHAR2(200) NOT NULL,
NR_NIVELE NUMBER(2) NOT NULL
);

- popularea tabelei CLADIRI:


INSERT INTO CLADIRI
VALUES(:COD, :ADRESA, :NR_NIVELE);

- crearea tabelei APARTAMENTE:


CREATE TABLE APARTAMENTE
(
COD_AP INTEGER PRIMARY KEY,0
90
Probleme pentru ATESTAT 2013

NR_CAMERE NUMBER(3) NOT NULL,


ETAJ NUMBER(2) NOT NULL,
OBS VARCHAR2(200),
COD_CLADIRE INTEGER REFERENCES CLADIRI(COD_CLADIRE)
);

- popularea tabelei ELEVI:


INSERT INTO APARTAMENTE
VALUES(:COD_AP, :NR_CAMERE, :ETAJ, :OBS, :COD_CLADIRE);

Cerința b:
SELECT ADRESA, COD_AP, NR_CAMERE, ETAJ, OBS
FROM CLADIRI INNER JOIN APARTAMENTE ON CLADIRI.COD_CLADIRE =
APARTAMENTE.COD_CLADIRE
WHERE NR_NIVELE > 2;

Cerința c:
SELECT ADRESA
FROM CLADIRI INNER JOIN APARTAMENTE ON CLADIRI.COD_CLADIRE =
APARTAMENTE.COD_CLADIRE
WHERE NR_CAMERE = (SELECT MAX(NR_CAMERE) FROM APARTAMENTE);

Subiect nr.14
Un club sportiv de atletism ţine evidenţa sportivilor folosind entităţile
CLUB şi SPORTIV conform ERD-ului de mai jos.
SPORTIV
CLUB #cods
#cod_club are *nume
*denumire *prenume
* localitate *vârsta
aparține

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Să se afişeze cluburile alfabetic și media de vârstă a sportivilor fiecărui
club.
c) Să se afişeze alfabetic cei(cel) mai bătrâni sportivi împreună cu
cluburile lor.

91
Probleme pentru ATESTAT 2013

Tabela CLUBURI
COD_CLUB DENUMIRE LOCALITATE
1 Club Zenit Cluj
2 Club Dinamo București
3 Club Steaua Bacău
4 Club Rapid Bucureşti
5 Club Piticot Suceava
6 Club Ardealul Cluj

Tabela SPORTIVI
COD_CLUB CODS NUME PRENUME VÂRSTA
1 11 POP INA 15
2 22 DASCAL GINA 20
2 33 MIRON DANA 21
4 44 MIRON DAN 19
5 55 CARP VLAD 17
3 66 POPA ANA 21
6 77 AVRAM MONA 17
5 88 ENACHE CRISTI 18

Cerința b:
DENUMIRE MEDIA DE VÂRSTĂ
Club Ardealul 17
Club Dinamo 20.5
Club Piticot 17.5
Club Rapid 19
Club Steaua 21
Club Zenit 15

Cerința c:
PRENUM DENUMIRE_CL
NUME E VÂRSTĂ UB
MIRON DANA 21 Club Dinamo
POPA ANA 21 Club Steaua

Rezolvare:
Cerința a:
- crearea tabelei CLUBURI:
CREATE TABLE CLUBURI
92
Probleme pentru ATESTAT 2013

(
COD_CLUB INTEGER PRIMARY KEY,
DENUMIRE VARCHAR2(20) NOT NULL,
LOCALITATE NUMBER(20) NOT NULL
);

- popularea tabelei CLUBURI:


INSERT INTO CLUBURI
VALUES(:COD_CLUB, :DENUMIRE, :LOCALITATE);

- crearea tabelei SPORTIVI:


CREATE TABLE SPORTIVI
(
CODS INTEGER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(20) NOT NULL,
VARSTA NUMBER(3) NOT NULL,
COD_CLUB INTEGER REFERENCES CLUBURI(COD_CLUB)
);

- popularea tabelei SPORTIVI:


INSERT INTO SPORTIVI
VALUES(:CODS, :NUME, :PRENUME, :VARSTA, :COD_CLUB);

Cerința b:
SELECT DENUMIRE, A.”MEDIA DE VARSTA” FROM
(SELECT COD_CLUB, AVG(VARSTA) AS "MEDIA DE VARSTA"
FROM SPORTIVI GROUP BY COD_CLUB) A
INNER JOIN CLUBURI ON A.COD_CLUB = CLUBURI.COD_CLUB
ORDER BY DENUMIRE;

Cerința c:
SELECT NUME, PRENUME, VARSTA, DENUMIRE
FROM CLUBURI INNER JOIN SPORTIVI ON CLUBURI.COD_CLUB =
SPORTIVI.COD_CLUB
WHERE VARSTA = (SELECT MAX(VARSTA) FROM SPORTIVI)
ORDER BY NUME ASC, PRENUME ASC;

Subiect nr. 15
O asociație de locatari ţine evidenţa locatarilor şi apartamentelor folosind
entităţile: LOCATAR şi APARTAMENT conform ERD-ului de mai jos.

93
Probleme pentru ATESTAT 2013

APARTAMENT
LOCATAR #coda
locuiește
#codl *nr_camere
*nume *număr_ap
* prenume *sumă_restantă
*loc_muncă este locuit

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Care este cea mai mare datorie şi care sunt persoanele ce locuiesc în
acest/aceste apartamente
c) Să se afişeze alfabetic locatarii si numărul apartamentului lor, care au
acelaşi loc de muncă cu cel citit de la tastatură.

Tabela APARTAMENTE
CODA NR_CAMERE NUMĂR_AP SUMĂ_RESTANTĂ

1 2 20 0
2 3 21 75
3 4 22 100
4 3 23 0
5 4 24 200
6 2 25 50

Tabela LOCATARI
CODL CODA NUME PRENUME LOC_MUNCĂ
111 1 POP INA SC ASTAR
112 2 DASCAL GINA GPN2
113 4 MIRON DANA GPN2
114 4 MIRON DAN SC EMPOS
115 3 CARP VLAD SC GEN 1
116 3 CARP ANA SC GEN 1
117 5 AVRAM MONA GPN2
118 6 ENACHE CRISTI AUTOSERVICE
119 2 DASCAL MIHAI ROMPETROL
120 1 POP VASILE SC ASTAR

94
Probleme pentru ATESTAT 2013

Cerința b:
NUME PRENUME SUMA_RESTANTĂ
AVRAM MONA 200

Cerința c: LOC DE MUNCA=”GPN2”


NUME PRENUME NUMĂR_APARTAMENT
AVRAM MONA 24
DASCAL GINA 21
MIRON DANA 23

Rezolvare:
Cerința a:
- crearea tabelei APARTAMENTE:
CREATE TABLE APARTAMENTE
(
COD_A INTEGER PRIMARY KEY,
NR_CAMERE NUMBER(2) NOT NULL,
NUMAR_AP NUMBER(3) NOT NULL,
SUMA_RESTANTA NUMBER(6) NOT NULL
);

- popularea tabelei APARTAMENTE:


INSERT INTO APARTAMENTE
VALUES(:COD_A, :NR_CAMERE, :NUMAR_AP, :SUMA_RESTANTA);

- crearea tabelei LOCATARI:


CREATE TABLE LOCATARI
(
CODL INTEGER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(20) NOT NULL,
LOC_MUNCA VARCHAR2(30) NOT NULL,
COD_A INTEGER REFERENCES APARTAMENTE(COD_A)
);

- popularea tabelei LOCATARI:


INSERT INTO LOCATARI
VALUES(:CODL, :NUME, :PRENUME, :LOC_MUNCA, :COD_A);

Cerința b:
SELECT NUME, PRENUME, SUMA_RESTANTA
FROM APARTAMENTE INNER JOIN LOCATARI ON APARTAMENTE.COD_A =
LOCATARI.COD_A
95
Probleme pentru ATESTAT 2013

WHERE SUMA_RESTANTA = (SELECT MAX(SUMA_RESTANTA) FROM


APARTAMENTE);

Cerința c:
SELECT NUME, PRENUME, NUMAR_AP
FROM APARTAMENTE INNER JOIN LOCATARI ON APARTAMENTE.COD_A =
LOCATARI.COD_A
WHERE LOC_MUNCA = :LOC_MUNCA
ORDER BY NUME ASC, PRENUME ASC;

Subiect nr. 16
Un parc auto ţine evidenţa proprietarilor şi autovehiculelor folosind
entităţile: PROPRIETAR şi AUTOVEHICUL conform ERD-ului de mai jos.

AUTOVEHICUL
PROPRIETAR #nr_inmatric
are
#cnp * marca
* nume * model
*prenume aparține * culoare
* adresa * an_fabricație
*telefon

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Să se afişeze lista proprietarilor cu autovehiculele al căror an de
fabricaţie este cuprins între doi ani specificaţi de la tastatură.
c) Să se afişeze anul de fabricație al celui mai nou automobil și
proprietarul, alfabetic după marcă.

Tabela PROPRIETARI
CNP NUME PRENUME ADRESĂ TELEFON

2961904555777 POP INA RĂDĂUȚI 566123


2950207555777 DASCAL GINA SUCEAVA 217654
2960410555777 MIRON DANA MARGINEA 416097
1972411555777 MIRON DAN MARGINEA 416789

96
Probleme pentru ATESTAT 2013

2962512555777 CARP VLAD SUCEAVA 217894


1971708555777 CARP ANA SUCEAVA 217439
2981907555777 AVRAM MONA RĂDĂUȚI 561985
2980909555777 ENACHE CRISTI VICOV 524312
1990210555777 DASCAL MIHAI VICOV 524433
2972411555777 POP VASILE RĂDĂUȚI 561763

Tabela AUTOVEHICULE
NR_INMATRI MODEL CULOA AN_FABRI
CNP C MARCA RE C
SV-12-ABL MERCED VIANO
2961904555777 ROSU 2008
ES
SV-11-CRP MERCED VITO
2950207555777 NEGRU 2005
ES
SV-06-STR LOGAN ALBAST
2960410555777 1999
DACIA RU
SV-32-AML CORSA ARGINTI
1972411555777 OPEL 2000
U
2962512555777 SV-42-MLS OPEL ASTRA VERDE 2005
SV-23-CSJ PEUGEO ONYX
1971708555777 GALBEN 2009
T
SV-19-DPF PEUGEO BOXER
2981907555777 ALB 2004
T
SV-39-ELG VOLKS POLO ARGINTI
2980909555777 1998
WAGEN U
SV-02-MSF VOLKS PASSAT
1990210555777 AURIU 2001
WAGEN
SV-37-NRF VOLKS TOUAREG
2972411555777 NEGRU 2002
WAGEN
SV-11-JHL LOGAN ALBAST
2950207555777 2001
DACIA RU
SV-22-KML VOLKS POLO ARGINTI
2960410555777 2000
WAGEN U

Cerința b:
AN1=2002
AN2=2005
NUME PRENUME AN_FABRIC
DASCAL GINA 2005
CARP VLAD 2005
AVRAM MONA 2004

97
Probleme pentru ATESTAT 2013

POP VASILE 2002

Cerința c:
NUME PRENUME MARCA AN_FABRIC

MIRON DANA DACIA 2001


POP INA MERCEDES 2008
CARP VLAD OPEL 2005
CARP ANA PEUGEOT 2009
POP VASILE VOLKSWAGEN 2002

Rezolvare:
Cerința a:
- crearea tabelei PROPRIETARI:
CREATE TABLE PROPRIETARI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(20) NOT NULL,
ADRESA VARCHAR2(200) NOT NULL,
TELEFON VARCHAR2(10) NOT NULL
);

- popularea tabelei PROPRIETARI:


INSERT INTO PROPRIETARI
VALUES(:CNP, :NUME, :PRENUME, :ADRESA, :TELEFON);

- crearea tabelei AUTOVEHICULE:


CREATE TABLE AUTOVEHICULE
(
NR_INMATRIC VARCHAR2(10) PRIMARY KEY,
MARCA VARCHAR2(20) NOT NULL,
MODEL VARCHAR2(20) NOT NULL,
CULOARE VARCHAR2(10) NOT NULL,
AN_FABRICATIE NUMBER(4) NOT NULL,
CNP NUMBER(13) REFERENCES PROPRIETARI(CNP)
);

- popularea tabelei AUTOVEHICULE:


INSERT INTO AUTOVEHICULE
VALUES(:NR_INMATRIC, :MARCA, :MODEL, :CULOARE, AN_FABRICATIE,
:CNP);

Cerința b:
SELECT NUME, PRENUME, AN_FABRICATIE

98
Probleme pentru ATESTAT 2013

FROM PROPRIETARI INNER JOIN AUTOVEHICULE ON PROPRIETARI.CNP =


AUTOVEHICULE.CNP
WHERE AN_FABRICATIE > :AN_MINIM AND AN_FABRICATIE < :AN_MAXIM;

Cerința c:
SELECT NUME, PRENUME, MARCA, AN_FABRIC
(SELECT CNP, MAX(AN_FABRICATIE) AS AN_FABRIC FROM AUTOVEHICULE
GROUP BY CNP) A
INNER JOIN
(SELECT CNP, NUME, PRENUME, MARCA, AN_FABRICATIE
FROM PROPRIETARI INNER JOIN AUTOVEHICULE ON PROPRIETARI.CNP =
AUTOVEHICULE.CNP) B
ON A.CNP = B.CNP AND A. AN_FABRIC = B.AN_FABRICATIE
ORDER BY MARCA;

Subiect nr. 17
Într-o bază de date se ţine evidenţa jucătorilor din echipele de fotbal.
Astfel o echipă are mai mulţi jucători iar un jucător joacă la o singură echipă.
Informaţiile referitoare la jucător care vor fi memorate sunt: numele, data
naşterii, înălţimea, salariul şi numărul de goluri marcate în anul anterior. Pentru
echipe se vor memora: numele, anul înfiinţării, localitatea, patronul şi bugetul
fiecăreia.
ERD-ul aplicaţiei este următorul:

JUCATOR ECHIPA
#cod #cod
* nume *nume
*data_nasterii Joacă la *an_infiintare
*inaltime *localitate
*salariu Are
*patron
o goluri marcate *buget

*buget
Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afișați jucătorii de la o echipa citită de la tastatură.
c) Afișați salariul mediu pentru fiecare echipă.

Tabela ECHIPE

99
Probleme pentru ATESTAT 2013

Tabela JUCATORI

Cerinţa b:

Cerinţa c:

Rezolvare:
Cerința a:
- crearea tabelei ECHIPE:
CREATE TABLE ECHIPE
(
COD INTEGER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
AN_INFIINTARE INTEGER NOT NULL,
LOCALITATE VARCHAR2(20) NOT NULL,
PATRON VARCHAR2(50) NOT NULL
BUGET INTEGER NOT NULL
);

- popularea tabelei ECHIPE:


INSERT INTO ECHIPE
100
Probleme pentru ATESTAT 2013

VALUES(:COD, :NUME, :AN_INFIINTARE, :LOCALITATE,:PATRON, :BUGET);

- crearea tabelei JUCATORI:


CREATE TABLE JUCATORI
(
COD NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
DATA_NASTERII DATE,
INALTIME NUMBER NOT NULL,
SALARIU NUMBER NOT NULL,
GOLURI_MARCATE NUMBER,
COD_ECHIPA INTEGER REFERENCES ECHIPE(COD)
);

- popularea tabelei JUCATORI:


INSERT INTO JUCATORI
VALUES(:COD, :NUME, :DATA_NASTERII, :INALTIME, :SALARIU,
:GOLURI_MARCATE, :COD_ECHIPA);

Cerința b:
SELECT NUME
FROM ECHIPA A, JUCATOR B
WHERE A.COD = B.COD_ECHIPA AND A.ECHIPA = :ECHIPA

Cerința c:
SELECT A.NUME, AVG (B.SALARIU) AS “SALAR MEDIU”
FROM ECHIPA A, JUCATOR B
WHERE A.COD = B.COD_ECHIPA GROUP BY A.COD

Subiect nr. 18
În fiecare an şcolar elevii din fiecare unitate şcolară primesc burse în
funcţie de situaţia lor şcolară şi financiară. Un elev poate primi bursă de merit,
pentru rezultate bune la învăţătură, bursă socială sau bursă de boală. Cuantumul
unei burse este stabilit în funcţie de categoria în care se încadrează aceasta.
Pentru fiecare elev se cunoaşte cnp-ul, numele şi prenumele, media şcolară şi
numărul de absenţe. Diagrama ER care descrie scenariul de mai sus este:
ELEV BURSA
Primeşte #id
#cnp *tip
*nume Este acordată *cuantum
*prenume
*media
*absente

101
Probleme pentru ATESTAT 2013

Cerințe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi elevii care au beneficiat de burse sociale şi au numărul cel mai
mare de absenţe.
c) Afişaţi pentru fiecare categorie de bursă, numărul de burse alocate.

Tabela BURSE

Tabela ELEVI

Cerința b:

Cerința c:

102
Probleme pentru ATESTAT 2013

Rezolvare:
Cerința a:
- crearea tabelei BURSE:
CREATE TABLE burse(id NUMBER(3) PRIMARY KEY,
tip varchar2(30) NOT NULL,
cuantum NUMBER(4) NOT NULL)
- popularea tabelei BURSE:
INSERT INTO burse(id,tip,cuantum)
VALUES(:id,:tip,:cuantum)
- crearea tabelei ELEVI:
CREATE TABLE elevi(cnp NUMBER(13) PRIMARY KEY,
nume VARCHAR2(30) NOT NULL,
prenume VARCHAR2(30) NOT NULL,
media NUMBER(3,2) NOT NULL,
absente NUMBER(3) NOT NULL,
id_bursa NUMBER(3) REFERENCES burse(id))
- popularea tabelei ELEVI:
INSERT INTO elevi(cnp,nume,prenume,media,absente,id_bursa)
VALUES(:cnp,:nume,:prenume,:media,:absente,:id_bursa)

Cerința b:
SELECT a.nume|| ' ' ||a.prenume ||' are '||a.absente|| ' absente' AS "Elevi bursieri"
FROM elevi a, burse b
WHERE lower(b.tip)= 'sociala' AND b.id=a.id_bursa AND a.absente=
(SELECT max(c.absente) FROM elevi c, burse d
WHERE lower(d.tip)='sociala' AND d.id=c.id_bursa
)

Cerința c:
SELECT count(a.id_bursa)AS "Numarul de burse acordate",b.tip AS "Categorie
bursă"
FROM elevi a, burse b
WHERE a.id_bursa=b.id
GROUP BY b.tip;

Subiect nr. 19
Pentru a se ţine evidenţa intrărilor şi ieşirilor din ţară a fost conceput un
sistem informatic care înregistrează pentru fiecare trecere prin vamă
următoarele date: numărul autoturismului, numele conducătorului auto,
103
Probleme pentru ATESTAT 2013

numărul de persoane din autoturism, dacă autoturismul intră sau iese din ţară
(intră - I, iese - E) şi data calendaristică la care autoturismul a tranzitat prin
vamă. Diagrama ER care descrie scenariul de mai sus este:

TRECERE Se face
#id trecere VAMA
*nr #id vama
autoturism *nume
Este tranzitată vama
* cond auto
* nr pers *judet
*tip
*data
Cerințe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi lista conducătorilor care au tranzitat prin vama Moraviţa în anul
2011.
c) Să se afişeze numarul de persoane care au trecut prin fiecare vamă.

Tabela VĂMI

Tabela TRECERI

104
Probleme pentru ATESTAT 2013

Cerința b:

Cerința c:

Rezolvare:
Cerința a:
- crearea tabelei VAMI:
CREATE TABLE vami (id_vama VARCHAR2(4)PRIMARY KEY,
nume_vama VARCHAR2(30) NOT NULL,
judet VARCHAR2(30) NOT NULL)

-popularea tabelei VAMI:


INSERT INTO vami (id_vama,nume_vama,judet)
VALUES(:id_vama,:nume_vama,:judet)

-crearea tabelei TRECERI:


CREATE TABLE treceri (id_trecere VARCHAR2(4) PRIMARY KEY,
nr_autoturism VARCHAR2(9) NOT NULL,
105
Probleme pentru ATESTAT 2013

cond_auto VARCHAR2(30) NOT NULL,


nr_persoane NUMBER(3) NOT NULL,
tip VARCHAR2(1) CHECK (tip IN ('I','E')),
data DATE NOT NULL,
id_vama VARCHAR2(4) REFERENCES vami(id_vama))

-popularea tabelei TRECERI:


INSERT INTO
treceri(id_trecere,nr_autoturism,cond_auto,nr_persoane,tip,data,id_vama)
VALUES (:id_trecere,:nr_autoturism,:cond_auto,:nr_persoane,:tip,:data,:id_vama)

Cerința b:
SELECT a.cond_auto FROM treceri a, vami b
WHERE a.id_vama=b.id_vama AND upper(b.nume_vama)='MORAVITA'
AND substr(to_char(a.data,'dd mm yyyy'),7,4)='2011';

Cerința c:
SELECT sum(a.nr_persoane),b.nume_vama FROM treceri a, vami b
WHERE a.id_vama=b.id_vama
GROUP BY b.nume_vama;

Subiect nr. 20
Pentru o bună gestionare a activităţii aeroportului din Suceava, s-a
conceput un sistem informatic care prelucrează următoarele date: data la care
este efectuat zborul, ruta pe care se desfăşoară zborul, ora de plecare, durata
zborului, tipul zborului (intern, internaţional), firma căreia îi aparţine avionul.
Un avion aparţinând unei firme poate zbura pe mai multe rute dar o rută de zbor
este acoperită de o singură firmă. Diagrama ER care descrie scenariul de mai
sus este:

ZBOR
#id FIRMĂ
Este efectuat
*data #id
*ruta *nume
*ora Efectuează
*durata
*tip

Cerințe:

106
Probleme pentru ATESTAT 2013

a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate


în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi numărul de zboruri interne şi numărul de zboruri internaţionale ce
se înregistrează pe aeroportul din Suceava.
c) Să se afişeze destinaţiile distincte ale zborurilor interne şi numele
firmelor ce deţin avioanele respective.

Tabela FIRME

Tabela ZBORURI

Cerința b:

Cerința c:

Rezolvare:
Cerința a:

107
Probleme pentru ATESTAT 2013

- crearea tabelei FIRME:


CREATE TABLE firme(id NUMBER(3) PRIMARY KEY,
nume VARCHAR2(30) NOT NULL)

- popularea tabelei FIRME:


INSERT INTO firme13(id,nume)
VALUES(:id,:nume)

-crearea tabelei ZBORURI:


CREATE TABLE zboruri(id NUMBER(3) PRIMARY KEY,
data DATE NOT NULL,
ruta VARCHAR2(100) NOT NULL,
ora VARCHAR2(5) NOT NULL,
durata VARCHAR2(5) NOT NULL,
tip VARCHAR2(15) CHECK (tip IN('Intern', 'International')),
id_firma NUMBER(3) REFERENCES firme(id))

-popularea tabelei ZBORURI:


INSERT INTO zboruri (id,data,ruta,ora,durata,tip,id_firma)
VALUES (:id,:data,:ruta,:ora,:durata,:tip,:id_firma)

Cerința b:
SELECT count(id) AS "Numar zboruri",tip FROM zboruri
GROUP BY tip;

Cerința c:
SELECT DISTINCT initcap(substr(a.ruta,instr(a.ruta,'-')+1)) AS "Destinatii interne",
b.nume
FROM zboruri a, firme b
WHERE a.id_firma=b.id AND upper(a.tip)='INTERN'

Subiect nr. 21
Pentru a-şi gestiona eficient activitatea, librăria Alexandria, foloseşte un
sistem informatic bazat pe două entităţi: rechizite şi vânzare. Pentru fiecare tip
de rechizite se reţine numele produsului şi preţul produsului iar pentru fiecare
vânzare se reţine data la care s-a efectuat vânzarea produsului şi cantitatea în
care acesta s-a vândut. O vânzare înregistrează un singur produs vândut, iar un
produs poate fi obiectul mai multor vânzări. Diagrama ER care descrie
scenariul de mai sus este:
RECHIZITE Este inclus VÂNZARE
#id #id
*nume *data
*pret *cantitate
Înregistrează
108
Probleme pentru ATESTAT 2013

Cerințe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi produsele pe care le oferă librăria în ordinea descrescătoare a
preţului.
c) Să se afişeze pentru fiecare produs cantităţile în care acestea s-au vândut.

Tabela RECHIZITE

Tabela VÂNZĂRI

Cerința b:

Cerința c:

109
Probleme pentru ATESTAT 2013

Rezolvare:
Cerința a:
- crearea tabelei RECHIZITE:
CREATE TABLE rechizite (id NUMBER(3) PRIMARY KEY,
nume VARCHAR2(30) NOT NULL,
pret NUMBER(4,2) NOT NULL)
- popularea tabelei RECHIZITE:
INSERT INTO rechizite (id,nume,pret)
VALUES (:id,:nume,:pret)
- crearea tabelei VANZARI:
CREATE TABLE vanzari (id NUMBER(3) PRIMARY KEY,
data DATE NOT NULL,
cantitate NUMBER(3),
id_produs NUMBER(3) REFERENCES rechizite(id))

- popularea tabelei VANZARI:


INSERT INTO vanzari (id,data,cantitate,id_produs)
VALUES (:id,:data,:cantitate,:id_produs)

Cerința b:
SELECT NUME,PRET
FROM RECHIZITE ORDER BY PRET DESC;

Cerința c:
SELECT A.NUME, SUM(B.CANTITATEA)
FROM RECHIZITE A, VANZARI B
WHERE A.ID=B.ID_PRODUS GROUP BY A.NUME

Subiect nr. 22
O agenţie de turism gestionează excursiile pe care le organizează
folosind un sistem informatic ce se bazează pe două entităţi: excursie şi turist.
Pentru o excursie se reţine destinaţia, data de plecare, durata măsurată în număr
de zile şi preţul excursiei. Pentru un turist se reţine numele, adresa, şi dacă a
110
Probleme pentru ATESTAT 2013

achitat sau nu costul călătoriei (A dacă a achitat preţul călătoriei şi N dacă nu a


achitat preţul călătoriei). Diagrama ER care descrie scenariul de mai sus este:

EXCURSIE TURIST
#id #id
Este aleasă
*destinatia *nume
*data plecarii *adresa
*durata *achitat
Aplică
*pret

Cerințe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi destinaţia şi durata excursiilor a căror denumire începe cu o
consoană şi au o durată mai mică de 10 zile.
c) Să se afişeze toate destinaţiile excursiilor, în ordine alfabetică şi pentru
fiecare excursie participanţii în ordine alfabetică descrescătoare.

Tabela EXCURSII

Tabela TURISTI

Cerința b:
111
Probleme pentru ATESTAT 2013

Cerința 3

Rezolvare:
Cerința a:
- crearea tabelei EXCURSII:
CREATE TABLE excursii(id number(3) PRIMARY KEY,
destinatia varchar2(100) NOT NULL,
data_plecarii date NOT NULL,
durata number(3) NOT NULL,
pret number(4) NOT NULL
)

- popularea tabelei EXCURSII:


INSERT INTO excursii (id,destinatia,data_plecarii,durata,pret)
VALUES (:id,:destinatia,:data_plecarii,:durata,:pret)

-crearea tabelei TURISTI


CREATE TABLE turisti (id number(3) PRIMARY KEY,
nume varchar2(50) NOT NULL,
adresa varchar2(100) NOT NULL,
achitat varchar2(1) check (achitat in('A','N')),
id_excursie number(3) references excursii(id))

-popularea tabelei TURISTI:


INSERT INTO turisti (id,nume,adresa,achitat,id_excursie)

112
Probleme pentru ATESTAT 2013

VALUES (:id,:nume,:adresa,:achitat,:id_excursie)

Cerința b:
SELECT destinatia, durata FROM excursii
WHERE upper(substr(destinatia,1,1)) NOT IN ('A','E','I','O','U') AND durata<10

Cerința c:
SELECT initcap(a.destinatia)AS destinatii, initcap(b.nume) AS participanti FROM
excursii a, turisti b
WHERE a.id=b.id_excursie
ORDER BY a.destinatia,b.nume desc

Subiect nr. 23
Într-un atelier auto fiecare mașină este reparată la un moment dat de un
singur mecanic, într-o singură zi. Pentru fiecare mecanic trebuie reținute
următoarele date: cnp, nume, prenume, data angajării, numărul de telefon și,
opțional, email-ul. Fiecare mașină poate fi reparată de-a lungul timpului de
același mecanic și atunci se vor reține pentru ea: numărul de înmatriculare, data
reparației, marca, modelul, prețul reparației, numele și numărul de telefon al
proprietarului. Modelul ERD corespunzător unei aplicații informatice capabilă
să țină evidența atelierului este:

MASINA
MECANIC #nr_inmat
#cnp #data_rep
*nume Repară
*marca
*prenume *model
*data_ang *pret
*nr_tel Este reparată
*nume_prop
oemail *tel_prop

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi alfabetic mecanicii care au efectuat reparații în data de 01-05-
2013. Se va afişa şi numărul de telefon al mecanicului.
c) Care este suma totală plătită la atelier de proprietarul Ionescu Vasile de-
a lungul timpului?

113
Probleme pentru ATESTAT 2013

Tabela MECANICI
CNP NUME PRENUM DATA_AN NR_TEL EMAIL
E G
1820225332 Ionescu Vasile 01-JAN- 07551112 ionescu.vasile@
211 2003 22 yahoo.com
2851211001 Grigorea Adelina 01-MAY- 07550011 g.adelina@gmai
122 n 2007 33 l.com
1870725332 Rusu Andrei 01-JUN- 07552211
211 2007 00
2870725332 Rusu Andreea 01-JUN- 07552211 rusu.andreea@y
211 2007 55 ahoo.com
1880522116 Brutaru Paul 01-JUN- 07552233 b.paul@gmail.c
677 2009 11 om
2900101778 Amariei Georgiana 01-DEC- 07550011
899 2011 88

Tabela MASINI

NR_INMAT DATA_REP Cnp_mec MARCA MODEL PRET


01-SV-AAA 01-MAY-2013 1820225332211 Dacia Logan 100
01-SV-AAA 20-DEC-2013 2851211001122 Dacia Logan 200
03-SV-BBB 01-MAY-2013 1880522116677 Fiat Linea 300
12-VS-AAA 01-MAY-2013 2900101778899 Opel Astra 200
03-SV-AAA 12-MAR-2013 2851211001122 Fiat Linea 500
09-MS-HHH 12-MAR-2013 1870725332211 Ford Focus 2000

Continuare
NUME_PROP TEL_PROP
Alexa Marius 0744112233
Alexa Marius 0744112233
Ionescu Vasile 0755112299
Vasile Irina 0722112233
Ionescu Vasile 0755112299
Salcea Mihai 0722776654

Cerința b:
Cerința c:
NUME PRENUME NR. TEL
Amariei Georgiana 0755001188 SUMA TOTALA
Brutaru Paul 0755223311 800
Ionescu Vasile 0755111222

114
Probleme pentru ATESTAT 2013

Rezolvare
Cerința a:
- crearea tabelei MECANICI:
CREATE TABLE MECANICI
(
CNP NUMBER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(20) NOT NULL,
DATA_ANG DATE NOT NULL,
NR_TEL NUMBER NOT NULL,
EMAILVARCHAR2(30)
);

- popularea tabelei MECANICI:


INSERT INTO MECANICI values(1820225332211,‘Ionescu’,’Vasile’,’01-JAN-
2003’,0755111222, 'ionescu.vasile@yahoo.com')

- crearea tabelei MASINI:


CREATE TABLE MASINI
(
NR_INMATVARCHAR2(10)NOT NULL,
DATA DATE NOT NULL,
CNP_MEC NUMBER REFERENCES MECANICI(CNP)
DURATA_REP NUMBER NOT NULL,
MARCA VARCHAR2(20) NOT NULL,
MODEL VARCHAR2(20) NOT NULL,
PRETNUMBER NOT NULL
NUME_PROP VARCHAR2(20) NOT NULL,
TEL_PROPVARCHAR2(14)),
PRIMARY KEY(NR_MAT, DATA_REP)
);

- popularea tabelei MASINI:


INSERT INTO MASINIvalues (’ 01-SV-AAA', ’01-MAY-2013’, 1820225332211,
’Dacia’, ’Logan’, 100, ’Alexa Marius’, ’0744112233’)

Cerinţa b:
SELECT A.NUME, A.PRENUME, A.NR_TEL
FROM MECANICI A, MASINI B
WHERE A.CNP=B.CNP_MEC AND B.DATA_REP=’01-MAY-2013’ ORDER BY
A.NUME

Cerinţa c:
SELECT SUM(PRET) AS ”SUMA TOTALA” FROM MASINI WHERE
NUME_PROP=’Ionescu Vasile’

115
Probleme pentru ATESTAT 2013

Subiect nr. 24
Un birou de traduceri are mai mulți angajați care pot efectua mai multe
traduceri în aceeași zi sau niciuna, depinde de solicitări. La o traducere lucrează
doar un singur traducător. Pentru a ține evidența, biroul are nevoie de o
aplicație care să memoreze pentru fiecare traducător cnp-ul, numele și
prenumele, data nașterii, numărul de telefon și opțional adresa de email. Pentru
fiecare traducere se cunosc numărul ei de ordine, numărul de pagini, tariful
perceput/pagină, limba(RO-FR, FR-RO, RO-EN etc.), data efectuării. Modelul
ERD corespunzător aplicației este:

TRADUCATOR
TRADUCERE
#cnp
Traduce #id
*nume
*nr_pag
*prenume
*pret_pag
*data_nast
Este tradusa *limba
*nr_tel
*data_efect
0email

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD. Populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi alfabetic numele, prenumele și numărul de telefon al
traducătorilor de limba franceză.
c) Care este impozitul pe care trebuie să-l plătească pe suma totală
încasatăde traducătoarea Popa Aurelia?

Tabela TRADUCATORI
CNP NUME PRENU DATA_N NR_TEL EMAIL
ME AST
1820225332211 Ionescu Vasile 01-JAN- 0755111222 ionescu.vasile@yah
1982 oo.com
2851211001122 Popa Aurelia 01-MAY- 0755001133
1987
1870725332211 Rusu Andrei 01-MAY- 0755221100 rusu.andrei@yahoo.
1976 com
2870725332211 Rusu Andreea 01-MAY- 0755221155 rusu.andreea@yaho
1976 o.com
1880522116677 Scutaru Paul 01-MAY- 0755223311 s.paul@gmail.com
1990

116
Probleme pentru ATESTAT 2013

2900101778899 Amariei Georgiana 01-DEC- 0755001188


1991

Tabela TRADUCERI
ID CNP_TRAD NR_PAG PRET_PAG LIMBA DATA_EFECT
1 2851211001122 23 10 RO-FR 23-OCT-2012
2 1870725332211 56 9 FR-RO 29-OCT-2012
3 2900101778899 8 12 RO-EN 02-MAR-2013
4 2851211001122 120 8 RO-FR 01-MAY-2013
5 2870725332211 15 11 EN-RO 20-APR-2013
6 1880522116677 20 10 FR-EN 20-APR-2013

Cerința 2
NUME PRENUME NR. TEL
Popa Aurelia 0755001133
Rusu Andrei 0755221100
Scutaru Paul 0755223311

Cerinta 3
IMPOZIT
190.4
Rezolvare
Cerința a:
- crearea tabelei TRADUCATORI:
CREATE TABLE TRADUCATORI
(
CNP NUMBER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(20) NOT NULL,
DATA_NAST DATE NOT NULL,
NR_TEL NUMBER NOT NULL,
EMAIL VARCHAR2(30)
);

- popularea tabelei TRADUCATORI:


INSERT INTO TRADUCATORI values(1820225332211,‘Ionescu’,’Vasile’,’01-JAN-
2003’,0755111222, 'ionescu.vasile@yahoo.com ')

- crearea tabelei TRADUCERI:


CREATE TABLE TRADUCERI
(
ID NUMBER PRIMARY KEY,
CNP_TRAD NUMBER REFERENCES TRADUCATORI(CNP)
NR_PAGNUMBER NOT NULL

117
Probleme pentru ATESTAT 2013

PRET_PAGNUMBER NOT NULL


LIMBA VARCHAR2(20) NOT NULL,
DATA_EFECT DATE NOT NULL
);

- popularea tabelei TRADUCERI:


INSERT INTO TRADUCERI values (1, 2851211001122, 23, 10, ’ RO-FR’,’ 23-
OCT-2012’)

Cerinţa b:
SELECT DISTINCT A.NUME, A.PRENUME, A.NR_TEL
FROM TRADUCATORI A, TRADUCERI
WHERE A.CNP=B.CNP_TRAD AND (B.LIMBA LIKE ‘FR%’ OR B.LIMBA LIKE ‘%FR’)
ORDER BY A.NUME

Cerinţa c:
SELECT (16/100)*sum(b.pret_pag*b.nr_pag) as ”IMPOZIT”
FROM traducatori a, traduceri b
WHERE a.cnp=b.cnp_trad and a.nume=’Popa’ and a.prenume=’Aurelia’

Subiect nr. 25
La un oficiu poştal este ţinută evidenţa abonamentelor la diverse
publicaţii (reviste). La fiecare publicaţie pot fi abonate una sau mai multe
persoane. Pentru a gestiona mai ușor aplicaţia, informaticianul a creat și tabela
ABONAMENTE cu informaţii despre fiecare abonament încheiat.Pentru
fiecare revistăse cunoaşte titlul şi preţul (în baza de date se memorează preţul
fără TVA), dar dat fiind faptul că uneori, publicațiile pot avea acelaşi nume,
fiecărei publicaţii i s-a asociat un număr de identificare unic. Unele dintre
revistele la care se pot face abonamente sunt: PC Magazin, Chip, Agora, Bravo.
Diagrama ER care descrie scenariul de mai sus este:

PUBLICATIE ABONAMENT
#id Este solicitata #cod
*titlu *data
*pret *durata
*domeniu corespunde *nume

Cerințe:
a) Construiti baza de date cu tabele corespunzatoare si relatiile
reprezentate în ERD. Populați tabelele cu înregistrari relevante pentru
cerințele următoare.

118
Probleme pentru ATESTAT 2013

b) Afișați lista persoanelor abonate la publicaţiile din domeniul IT,


ordonată alfabetic dupa nume.
c) Afişaţi lista publicaţiilor la care se pot face abonamente, într-un tabel
care va avea urmatoarea formă:
Codul Titlul Domeniul Preţul Preţul cu TVA
publicaţiei publicatiei tratat

Tabela ABONAMENTE

COD DATA DURATA NUME IDP


11 25-10-1989 8 Dumitrescu Vlad 101
12 01-11-2000 15 Ionescu Mihai 102
13 17-12-2005 7 Popescu Dan 103
14 12-07-2007 12 Georgescu Mara 101
15 15-01-1997 5 Ionescu Ana 105

Tabela PUBLICATII
ID TITLU PRET DOMENIU
101 PC Magazin 7 IT
104 Chip 8 IT
102 Agora 7 IT
103 One 11 Monden
105 Bravo 6 Magazin

Cerinţa 2

NUME TITLU DOMENIU


Dumitrescu Vlad PC Magazin IT
Georgescu Mara Chip IT
Ionescu Mihai Agora IT

Cerința 3
Titlul publicatie Domeniul tratat Pretul Pretul cu TVA
Agora IT 7 8,33
One Monden 11 13,09
Motor Auto 9 10,71
Bravo Magazin 6 7,14
PC Magazin IT 7 8,33

119
Probleme pentru ATESTAT 2013

Chip IT 8 9,52

Rezolvare
Cerința a:
- crearea tabelei PUBLICATII:
CREATE TABLE PUBLICATII
(
ID NUMBER PRIMARY KEY,
TITLU VARCHAR2(20) NOT NULL,
PRET NUMBER NOT NULL,
DOMENIUVARCHAR2(30) NOT NULL
);
- popularea tabelei PUBLICATII:
INSERT INTO publicatii values(101,'PC Magazin',7,'IT')

- crearea tabelei ABONAMENTE:


CREATE TABLE ABONAMENTE
(
CODNUMBER PRIMARY KEY,
DATA DATE NOT NULL,
DURATA NUMBER NOT NULL,
NUME VARCHAR2(20) NOT NULL,
IDP NUMBER REFERENCES PUBLICATII(ID),
);

- popularea tabelei ABONAMENTE:


INSERT INTO abonamente values (13,'17-12-2005',7,'Popescu Dan',103)

Cerinţa b:
SELECT B.NUME, A.TITLU, A.DOMENIU
FROM PUBLICATII A, ABONAMENTE B
WHERE A.ID=B.IDP AND A.DOMENIU='IT' ORDER BY B.NUME

Cerinţa c:
SELECTtitlu as "Titlul publicatie", domeniu as "Domeniul tratat", pret as "Pretul",
pret*1.19 as "Pretul cu TVA"
FROM PUBLICATII

Subiect nr. 26
Într-o instituţie şcolară sunt memorate într-un catalog virtual toate
notele elevilor. Pentru acest lucru, informaticianul a creat o bază de date în care
a inclus informaţii despre elevi (numele, prenumele, CNP-ul acestuia), precum
şi notele fiecărui elev. Este important să se cunoască data la care a fost pusă o
notă, pentru a se putea urmări frecvenţa notării.
120
Probleme pentru ATESTAT 2013

Diagrama ERD care descrie scenariul de mai sus este:


ELEV NOTA
#cnp Primeşte #data
*nume * nota
*prenume *materia
aparţine O observaţii

Cerinţe:
1. Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate in ERD şi populaţi tabelele cu înregistrări relevante pentru
cerinţele următoare.
2. Afişaţi numele, prenumele şi notele elevilor care au fost evaluaţi în
luna martie 2010 la o materie a cărei denumire se citeşte de la tastatură.
3. Determinaţi media notelor obţinute la informatică în anul 2010.

Tabela ELEVI
CNP NUME PRENUME
1234567891234 Popescu Dan

2345678912345 Ionescu Adrian

3456789123456 Dumitrescu Crina

4567891234567 Ionescu Catalin

5678912345678 Georgescu Emil

Tabela NOTE

DATA CNP_ELEV NOTA MATERIA OBSERVATII


05-03-2010 1234567891234 9 informatica -

15-10-2009 5678912345678 9 matematica -

10-03-2010 3456789123456 7 fizica -

12-10-2009 2345678912345 10 chimia -

06-10-2009 4567891234567 10 informatica -

05-03-2010 4567891234567 8 informatica -

Cerinţa b:

121
Probleme pentru ATESTAT 2013

NUME PRENUME MATERIA NOTA DATA


Popescu Dan informatica 9 05-03-2010

Ionescu Catalin informatica 8 05-03-2010

Cerinţa c:
Media notelor
8,5

Rezolvare
Cerința a:
- crearea tabelei ELEVI:
CREATE TABLE ELEVI
(
CNP NUMBER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(30) NOT NULL
);

- popularea tabelei ELEVI:


INSERT INTO elevi values(1234567891234,'Popescu','Dan')

- crearea tabelei NOTE:


CREATE TABLE NOTE
(
DATA DATE NOT NULL,
CNP_ELEV NUMBER REFERENCES ELEVI(CNP),
PRIMARY KEY(DATA,CNP_ELEV),
NOTA NUMBER NOT NULL,
MATERIA VARCHAR2(20) NOT NULL,
OBSERVATII VARCHAR2(20)
);

- popularea tabelei NOTE:


INSERT INTO note values('05-03-2010',1234567891234,9,'informatica','-')

Cerinţa b:
SELECT A.NUME, A.PRENUME, B.MATERIA, B.NOTA, B.DATA
FROM ELEVI A, NOTE B
WHERE A.CNP=B.CNP_ELEV AND
DATA BETWEEN '01-03-2010' AND '31-03-2010'
AND B.MATERIA=:DISCIPLINA

Cerinţa c:

122
Probleme pentru ATESTAT 2013

SELECT AVG(NOTA) AS "MEDIA NOTELOR"


FROM NOTE
WHERE MATERIA='INFORMATICA' AND DATA>=’01-01-2010’ AND DATA<=’31-12-
2010’

Subiect nr. 27
Într-o instituţie şcolară sunt în desfăşurare mai multe proiecte
(parteneriate cu alte şcoli din străinătate, concursuri, tabere etc). În cadrul
proiectelor sunt implicaţi atât profesori cât şi elevi (diferenţiaţi în baza de date
prin atributul mandatoriu statut), pe care îi vom numi într-un cuvânt
participanţi. Pentru fiecare proiect trebuie să se cunoască data începerii, titlul și
durata desfăşurării acestuia. De asemenea, este important bugetul alocat.
Diagrama ER care descrie scenariul de mai sus este:
PARTICIPANT PROIECT
#id organizează #id
*nume *denumire
*prenume *data_in
*statut include *buget
O observaţii

Cerinţe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD şi populaţi tabelele cu înregistrări relevante pentru
cerinţele următoare.
b) Bugetul proiectelor va fi mărit cu 10%. Creaţi o interogare care va
afişa denumirea fiecărui proiect, bugetul actual si noul buget. Interogarea va
cuprinde 3 coloane cu titlul Denumirea proiectului, Buget vechi, Buget nou.
c)Afişaţi denumirea şi data începerii proiectelor care au început din anul
2009.

Tabela PROIECTE

ID DENUMIRE DATA_IN BUGET OBSERVATII


11 Pro natura 15-01-2009 1000 International
12 Eco oras 08-04-2008 8500 Local
13 Eco judet 05-01-2010 15000 Judetean
14 Ecologie 23-10-2009 350 Regional
15 Eco scoala 14-08-2008 14700 International

123
Probleme pentru ATESTAT 2013

Tabela PARTICIPANŢI
ID ID_PROIECT NUME PRENUME STATUT
111 13 Popescu George Elev
222 11 Ionescu Ana Professor
333 15 Dumitrescu Carmen Professor
444 14 Costescu Nicu Professor
555 11 Ionescu Mircea Professor

Cerinţa b:
Denumirea proiectului Buget vechi Buget nou
Eco scoala 14700 16170
Pro natura 1000 1100
Eco oras 8500 9350
Eco judet 15000 16500
Ecologie 350 385
Cerinţa c:
DENUMIRE DATA_IN
Pro natura 15-01-2009
Eco judet 05-01-2010
Ecologie 23-10-2009

Rezolvare
Cerința a:
- crearea tabelei PROIECTE:
CREATE TABLE PROIECTE
(
ID NUMBER PRIMARY KEY,
DENUMIRE VARCHAR2(20) NOT NULL,
DATA_IN DATE NOT NULL,
BUGET NUMBER NOT NULL,
OBSERVATII VARCHAR2(30)
);

- popularea tabelei PROIECTE:


INSERT INTO proiecte values(11,'Pro natura','15-01-2009',15,1000,'international')

- crearea tabelei PARTICIPANTI:


CREATE TABLE PARTICIPANTI
(
ID NUMBER PRIMARY KEY NOT NULL,
ID_PROIECT NUMBER REFERENCES PROIECTE(ID),
124
Probleme pentru ATESTAT 2013

NUME VARCHAR2(20) NOT NULL,


PRENUME VARCHAR2(20) NOT NULL,
STATUT VARCHAR2(10) NOT NULL
);

- popularea tabelei PARTICIPANTI:


INSERT INTO participanti values(111,13,'Popescu','George','elev')

Cerinţa b:
SELECT denumire as "Denumirea proiectului", buget as "Buget vechi", buget*1.1 as
"Buget nou"
FROM PROIECTE

Cerinţa c:
SELECT DENUMIRE, DATA_IN FROM PROIECTE WHERE data_in>='01-01-2009'

Subiect nr. 28
O baza de date conține informații despre elevii unei școli și diriginții
acestora. Fiecare diriginte îndrumă unul sau mai mulți elevi, fiecare elev este
îndrumat de un singur diriginte. Diagrama ERD ce modelează situația este dată
în figura:

ELEV DIRIGINTE
#id Este indrumat #id
*nume *nume
*prenume *prenume
*clasa consiliaza *specializare

Cerințe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate
în ERD şi populaţi tabelele cu înregistrări relevante pentru cerinţele
următoare.
b) Afişaţi specializările profesorilor care sunt diriginţi. Dacă există 2
profesori cu aceeaşi specializare, aceasta va fi afişată o singură dată.
c) Afişaţi în ordine alfabetică elevii care au ca diriginţi profesori a căror
specializare o citiţi de la tastatură.

Tabela DIRIGINŢI
ID NUME PRENUME SPECIALIZARE
11 Alexa Adriana matematica
12 Melinte Daniel chimie

125
Probleme pentru ATESTAT 2013

13 Donciu Elena fizica


14 Zlotari Vlad fizica
15 Enache Sorin informatica
16 Ratiu Angela informatica

Tabela ELEVI1

ID ID_DIRIGINTE NUME PRENUME CLASA


100 12 Radulescu Vasile 9B
101 15 Luculescu Didina 11C
102 14 Manolescu Paula 9C
103 13 Oprescu Bogdan 9C
104 16 Filipescu Lorin 10C

Cerinţa b:

SPECIALIZARE
Chimie
Fizica
Informatica

Cerinţa c:
Pentru fizică se afişează:
NUME PRENUME Diriginte SPECIALIZARE
Manolescu Paula Zlotari fizica
Oprescu Bogdan Donciu fizica

Rezolvare
Cerința a:
- crearea tabelei DIRIGINTI:
CREATE TABLE DIRIGINTI
(
ID NUMBER PRIMARY KEY,
NUME VARCHAR2(15) NOT NULL,
NUME VARCHAR2(20) NOT NULL
PRENUME VARCHAR2(15) NOT NULL,
SPECIALIZARE VARCHAR2(20) NOT NULL
);

- popularea tabelei DIRIGINTI:


INSERT INTO diriginti values (11,'Alexa','Adriana','matematica')

126
Probleme pentru ATESTAT 2013

- crearea tabelei ELEVI1:


CREATE TABLE ELEVI1
(
ID NUMBER PRIMARY KEY NOT NULL,
ID_DIRIGINTE NUMBER REFERENCES DIRIGINTI(ID),
NUME VARCHAR2(15) NOT NULL,
PRENUME VARCHAR2(15) NOT NULL,
CLASA VARCHAR2(10) NOT NULL
);

- popularea tabelei ELEVI1:


INSERT INTO elevi1 values (100,12,'RADULESCU','vasile','9B')

Cerinţa b:
SELECT DISTINCT B.SPECIALIZARE
FROM ELEVI1 A, DIRIGINTI B
WHERE A.ID_DIRIGINTE=B.ID

Cerinţa c:
SELECT A.NUME, A.PRENUME, B.NUME AS "DIRIGINTE", B.SPECIALIZARE
FROM ELEVI1 A, DIRIGINTI B
WHERE A.ID_DIRIGINTE=B.ID AND SPECIALIZARE=:DISCIPLINA

Subiect nr. 29
Într-o bază de date se memorează informaţii despre regizorii și filmele
acestora. Fiecare regizor poate regiza unul sau mai multe filme, dar fiecare film
este regizat de un singur regizor. Durata filmului este exprimata în număr de
minute (90, 120 sau mai mare de 120), iar bugetul este suma alocată producerii
filmului. Diagrama ERD ce modelează situaţia este dată în figură.
FILM REGIZOR
#id A fost regizat #id
*titlu *nume
*durata
*an_apar
regizeaza
*buget

Cerințe:
a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile
reprezentate în ERD şi populaţi tabelele cu înregistrări relevante
pentru cerinţele următoare.

127
Probleme pentru ATESTAT 2013

b) Afişaţi în ordine alfabetică toate filmele cu buget mai mic de 30000


de euro, precum și regizorul acestora (titlul filmului, anul apariției,
bugetul și numele regizorului).
c) Afişaţi un raport care va cuprinde denumirea fiecărui film, numele
regizorului și durata filmului astfel: dacă filmul durează 120 de
minute afișați în coloana „TIMP ALOCAT” mesajul Durata e de 2
ore, daca durează90’ afișati mesajul Obisnuit, altfel afișați Doua
serii.

Tabela REGIZORI
ID NUME
101 Anthony Minghella
102 Danny Boyle
103 Roberto Benigni
104 Martin Scorsese
105 Curtis Hanson
Tabela FILME
ID ID_REGIZORI TITLU DURATA AN_APAR BUGET
1 101 Pacientul englez 120 2008 50000
2 102 Vagabondul milionar 180 2009 75000
3 103 Viata e frumoasa 120 2008 25000
4 105 8 mile 90 2009 70000
5 104 Casino 180 2008 20000
6 104 Aviatorul 90 2009 10000

Cerinţa 2
TITLU AN_APAR BUGET NUME
Aviatorul 2009 10000 Martin Scorsese
Casino 2008 20000 Martin Scorsese
Viata e frumoasa 2008 25000 Roberto Benigni

Cerinţa 3
TITLU NUME DURATA Timp alocat
Vagabondul milionar Danny Boyle 180 Doua serii
Viata e frumoasa Roberto Benigni 120 Durata e de 2 ore
Casino Martin Scorsese 180 Doua serii
Pacientul englez Anthony Minghella 120 Durata e de 2 ore

128
Probleme pentru ATESTAT 2013

8 mile Curtis Hanson 90 Obisnuit


Aviatorul Martin Scorsese 90 Obisnuit

Rezolvare
Cerința a:
- crearea tabelei REGIZORI:
CREATE TABLE REGIZORI
(
ID INTEGER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL
);

- popularea tabelei REGIZORI:


- INSERT INTO regizori values (101,'Anthony Minghella')

- crearea tabelei FILME:


CREATE TABLE FILME
(
ID NUMBER PRIMARY KEY NOT NULL,
ID_REGIZORI NUMBER REFERENCES REGIZORI(ID),
TITLU VARCHAR2(40) NOT NULL,
DURATA NUMBER NOT NULL,
AN_APAR DATE NOT NULL,
BUGET NUMBER NOT NULL
);

- popularea tabelei FILME:

INSERT INTO FILME VALUES(1,101, ’Pacientul englez’,120,2008, 50000)

Cerinţa b:
SELECT A.TITLU, A.AN_APAR, A.BUGET, B.NUME
FROM FILME A, REGIZORI B
WHERE A.ID_REGIZORI=B.ID AND A.BUGET<30000
AND B.PREMIU = 'nu';

Cerinţa c:
SELECT a.titlu, b.nume, a.durata, decode(a.durata,120,'Durata e de 2 ore',180,'Doua
serii','Obisnuit') as "Timp alocat"
FROM FILME A, REGIZORI B
WHERE A.ID_REGIZORI=B.ID

129
Probleme pentru ATESTAT 2013

Subiect nr. 30
Informaţiile referitoare la profesorii unei şcoli sunt gestionate cu
ajutorul unei aplicaţii ce are la bază două entităţi: ARIE şi PROFESOR. Pentru
fiecare profesor se cunoaşte: numele, data naşterii, salariul şi codul ariei
curriculare din care face parte. Doar unii profesori primesc premiu. Codul ariei
curriculare este un număr format din două cifre.
ERD-ul corespunzător aplicaţiei este următorul:
PROFESOR
ARIE Cuprinde #id
#cod_arie *nume
Apartine
*denumire *data_nast
*salariu
o premiu

Cerințe:
a) Construiți baza de date cu tabele corespunzătoare și relațiile
reprezentate în ERD. Populați tabelele cu înregistrari relevante pentru
cerințele următoare.
b) Afişaţi toţi profesorii, împreună cu salariul, care fac parte din aria
curriculară „Stiinte” şi care nu primesc premiu.
c) Afişaţi salariului minim şi maxim pentru fiecare arie curriculară.

Tabela ARII
COD_ARIE DENUMIRE
11 Stiinte
12 Tehnologii
13 Om si societate
14 Consiliere
Limba si
15
comunicare

Tabela PROFESORI
ID COD_ARIE NUME DATA_NAST SALARIU PREMIU
1 12 Pop Ana 15-04-1971 1124 da
2 11 Alexa Dan 29-12-1952 2139 nu
3 11 Mihoc Vlad 01-02-1949 2314 nu
4 11 Damian Alex 11-08-1954 2247 da

130
Probleme pentru ATESTAT 2013

5 15 Rusu Alin 19-03-1952 2432 nu


6 11 Ursu Didina 14-11-1965 1453 nu

Cerința b:
NUME SALARIU DENUMIRE
Alexa Dan 2139 Stiinte
Mihoc Vlad 2314 Stiinte
Ursu Didina 1453 Stiinte

Cerința c:
COD_ARIE MAX(SALARIU) MIN(SALARIU)
11 2314 1453
12 1124 1124
15 2432 2432

Rezolvare
Cerința a:
- crearea tabelei ARII:
CREATE TABLE ARII
(
COD_ARIENUMBER PRIMARY KEY,
DENUMIRE VARCHAR2(30)NOT NULL
);

- popularea tabelei ARII:


INSERT INTO ARII VALUES(11,'Stiinte')

- crearea tabelei PROFESORI:


CREATE TABLE PROFESORI
(
ID INTEGER PRIMARY KEY,
COD_ARIE NUMBER REFERENCES ARII(COD_ARIE),
NUME VARCHAR2(20) NOT NULL,
DATA_NAST DATE NOT NULL,
SALARIU NUMBER NOT NULL,
PREMIU VARCHAR2(4)
);

- popularea tabelei PROFESORI:


INSERT INTO PROFESORI VALUES(1,12,'Pop Ana','15-04-1971',1124,'da')

Cerinţa b:
SELECT B.NUME, B.SALARIU, A.DENUMIRE

131
Probleme pentru ATESTAT 2013

FROM ARII A, PROFESORI B


WHERE A.COD_ARIE = A.COD_ARIE AND A.DENUMIRE = 'Stiinte'
AND B.PREMIU = 'nu';

Cerinţa c:
SELECT COD_ARIE, MAX(SALARIU), MIN(SALARIU)
FROM PROFESORI
GROUP BY COD_ARIE

132
Probleme pentru ATESTAT 2013

OFFICE

Subiectul nr.1

1. Creaţi un document pe care să-l formataţi astfel:


 Dimensiunea hârtiei –A4;
 Marginile: Top=1 cm, Bottom=1 cm, Left=1 cm, Right=1,5 cm, Gutter
= 2 cm;
 Poziţie Gutter: Top;
 Orientarea paginii: Landscape.

2. Adăugaţi documentului antet şi subsol


 Antetul să conţină numele vostru în partea stângă scris cu Trebuchet
MS, 12, Bold, iar la dreapta data inserată automat;
 Subsolul paginii să conţină la stânga numele şcolii voastre iar pe centru
numărul paginii inserat automat.

3. Realizaţi

Indicatoare rutiere
4. Realizaţi:

5. Creaţi următoarea structură:


Indicatoare rutiere:
 Indicatoare de avertizare
 Indicatoare de reglementare:
 Indicatoare de reglementare a priorităţii;
 Indicatoare de interzicere sau restricţie;
 Indicatoare de obligare;
 Indicatoare de orientare şi informare:
 Indicatoare de orientare;
 Indicatoare de informare;
 Indicatoare de informare turistică;

133
Probleme pentru ATESTAT 2013

 Alte indicatoare:
 Indicatoare kilometrice;
 Indicatoare hectometrice;
 Indicatoare rutiere temporare şi mijloace de semnalizare a
lucrărilor:
 Indicatoare rutiere temporare;
 Mijloace de semnalizare a lucrărilor.

6. Creaţi un director Atestat_01 şi salvaţi documentul cu numele Indicatoare


rutiere.
7. Căutaţi cu ajutorul unui motor de căutare imaginidespre indicatoarele de
informare.Realizaţi o arhivă cu numele Indicatoare.zipce conţine 10 dintre
imaginile găsite.
8. Salvaţi una din imagini sub altă extensie decât cea implicită.

Subiectul nr. 2

1. Creaţi un document pe care să-l formataţi astfel:


 Dimensiunea hârtiei –A4;
 Marginile: Top = 2 cm, Bottom = 2 cm, Left = 1 cm, Right = 1 cm,
Gutter = 2 cm;
 Poziţie Gutter: Left;
 Orientarea paginii: Portret.

2. Adăugaţi documentului antet şi subsol


 Antetul să conţină numele vostru în partea stângă scris cu Cambria, 13,
Italic, iar la dreapta numele şcolii voastre;
 Subsolul paginii să conţină la stânga data inserată automat iar la dreapta
numărul paginii scis cu litere romane, inserat automat.

3. Realizaţi:
Destinaţii turistice în Europa

4. Realizaţi:

Cel mai vizitat loc din Europa

134
Probleme pentru ATESTAT 2013

5. Creaţi următorul tabel. Numerotarea va fi automată. Se va utiliza fontul


Cambria.

Destinații turistice în Europa


1. Viena, Austria
2. Insulele Feroe, Danemarca
3. Milano, Italia
4. Cadiz, Spania
5. Normandia, Franța

(1p)
6. Completați coloana din dreapta cu o imagine reprezentativă. Folosiți un
motor de căutare pe internet. (1p)
7. Realizaţi o arhivă cu numele imagini.zip ce conţine cele 5 imagini găsite.
(1p)
8. Căutaţi cu ajutorul funcţiei Search toate fişierele de tip Word care au fost
create săptămâna trecută. Faceţi o captură de ecran cu rezultatul căutării şi
adăugaţi-o la sfârşitul documentului creat anterior. Salvați documnetul sub
numele Destinatii Europa în directorul Atestat_02. (1p)
9. Realizaţi pe desktop o scurtătură către directorul My Documents de pe discul
C. (1p)

Subiectul nr. 3
1. Creaţi un document pe care să-l formataţi astfel:
 Dimensiunea hârtiei –A4;
 Marginile: Top = 1,5 cm, Bottom = 1,5 cm, Left = 2 cm, Right = 1 cm,
Gutter = 1 cm;
 Poziţie Gutter: Left;
 Orientarea paginii: Portret. (1p)

2. Adăugaţi documentului antet şi subsol

135
Probleme pentru ATESTAT 2013

 Antetul să conţină numele vostru în partea stângă scris cu Forte, 12, iar
la dreapta data inserată automat;
 Subsolul paginii să conţină la stânga numele şcolii voastre iar pe centru
numărul paginii inserat automat cu cifre arabe.

3. Realizaţi folosind Word Art, aliniaţi textul pe centrul paginii:

FORMULE TRIGONOMETRICE
4. Realizaţi: A

B C
5. Realizaţi următorul tabel:

𝑢 30° 45° 60°

sin 𝑢 1 √2 √3
2 2 2
cos 𝑢 √3 √2 1
2 2 2
𝑡𝑔 𝑢 1 1 √3
√3
𝑐𝑡𝑔 𝑢 √3 1 1
√3

6. Căutaţi cu ajutorul unui motor de căutare informaţii despre triunghiul sferic.


Salvaţi o imagine în documentul dvs.
7. Copiaţi trei paragrafe din una din paginile găsite pe care să le formataţi cu
fonturi şi culori diferite.Încadraţi pagina într-un chenar cu o linie dublă,
culoare albastră, grosime 3 pt, umbră la alegere.
8. Creaţi un director Atestat_03 şi salvaţi documentul cu numele
Formuletrigonometrice.

136
Probleme pentru ATESTAT 2013

Subiectul nr. 4

1. Creaţi un document pe care să-l formataţi astfel:


 Dimensiunea hârtiei –A4;
 Marginile: Top = 1,5 cm, Bottom = 1,5 cm, Left = 1 cm, Right = 1 cm,
Gutter = 1,5 cm;
 Poziţie Gutter: Top;
 Orientarea paginii: Landscape.

2. Adăugaţi documentului antet şi subsol


 Antetul să conţină numele vostru în partea stângă scris cu Rockwell,
12, U, iar la dreapta ora inserată automat;
 Subsolul paginii să conţină la stânga numele şcolii voastre iar pe centru
numărul paginii inserat automat cu cifre romane.

3. Introduceţi următorul titlu scris cu WordArt:

Piramida alimentară
4. Căutaţi cu ajutorul unui motor de căutare imagini cu piramida alimentară.
Inseraţi una din ele în documentul dvs.

5. Creaţi pe desktop directorul Atestat_04 în care salvaţi câteva din imaginile


găsite la punctul anterior. Sortaţi-le în ordine alfabetică.
6. Creaţi următorul tabel pe care să-l completaţi cu încă 7 rânduri cu alimentele
care le consumaţi zilnic:

137
Probleme pentru ATESTAT 2013

Denumire Proteine Lipide Glucide Calorii Gramaj


Banane 1,30 0,40 24 94 100g
Big Mac 11,80 11,70 19,90 232 100g
Coca Cola 0 0 11 44 100g

7. Adăugaţi încă un rând tablelului completat mai sus şi calculaţi totalul pe


fiecare coloană folosind o formulă de calcul automat. Câte calorii consumaţi
zilnic?
8. Aplicaţi documentului tema Foundryşi salvaţi documentul cu numele
Piramida alimentară în directorul Atestat_04.

Subiectul nr. 5
1. Creaţi un document pe care să-l formataţi astfel:
 Dimensiunea hârtiei – A5;
 Marginile: Top = 2 cm, Bottom = 2 cm, Left = 2 cm, Right = 2 cm,
Gutter = 1 cm;
 Poziţie Gutter: Left;
 Orientarea paginii: Landscape.

2. Adăugaţi documentului antet şi subsol


 Antetul să conţină numele şi adresa şcolii voastre în partea stângă scris
cu Cooper Black, 10;
 Subsolul paginii să conţină la stânga data inserată automat iar la dreapta
numele dvs.

3. Realizaţi:

Adeverinţă
(1p)

4. Deschideţi un nou document şi salvaţi-l cu numeleClienţi. Realizaţi


următorul tabel şi completaţi-l cu date:
5.
Nume Prenume Clasa Scoala Judetul Adresa Observatii
Popescu Ion XII Grup Scolar nr.1 Suceava Str. Medic
138
Probleme pentru ATESTAT 2013

Sperantei, nr.
1
Ionescu Vasile XI Grup Scolar nr.3 Alba Iulia Str. Piinilor, Biblioteca
nr. 6

6. Continuaţi documentul început la punctul 1 în care inseraţi textul din


chenarul de mai jos, stabiliţi documentul ca şi document principal în vederea
realizării îmbinării de corespondenţă:
Domnule Director,

Subsemnatul,«Nume»«Prenume», elev în clasa a «Clasa»-a la «Scoala»


din «judetul», domiciliat în, «Adresa», solicit, prin prezenta, eliberarea
unei adeverinte din care sa reiese că sunt elev la acest liceu.
Respectiva adeverință îmi este necesară pentru «Observatii».

7. Creaţi un director Atestat_05 şi salvaţi documentul cu numele Adeverinta

8. Folosiţi documentul Clienţi.doc ca sursă de informaţii şi îmbinați-l cu


scrisoarea tip Adeverinta.
9. Salvaţi documentul rezultatsub numeleAdeverinţă elevi.

Subiectul nr. 6
1. Creaţi un document pe care să-l formataţi astfel:
 Dimensiunea hârtiei – A4;
 Marginile: Top = 2 cm, Bottom = 2 cm, Left = 1 cm, Right = 1 cm,
Gutter = 3 cm;
 Poziţie Gutter: Left;
 Orientarea paginii: Portret.

2. Adăugaţi documentului antet şi subsol


 Antetul să conţină pe centru numele şcolii voastre scris cu Papyrus, 14,
Bold;
 Subsolul paginii să conţină la stânga numărul paginii inserat automat,
iar la dreapta data şi ora inserate automat.
3. Realizaţi în WordArtt:
Componentele calculatorului
139
Probleme pentru ATESTAT 2013

4. Creaţi următoarea structură:


Calculatorul este format din:
 unitate centrală
 placă de bază
 microprocesor
 circuite de memorie
 magistrale
 sursa de alimentare
 unitate de memorie
 memorie internă
 ROM
 RAM
 memorie externă
 hard disc
 floppy disc
 compact disc
 dispozitive periferice
 de intrare
 tastatură
 mouse
 scanner
 cameră video
 microfon
 de ieşire
 monitor
 imprimantă
 boxe
5. Salvaţi fişierul cu numele Componente PCîn directorul Atestat_06, creat de dvs.
pe Desktop.
6. Căutaţi cu ajutorul unui motor de căutare imaginidespre Supercalculatoare. Salvaţi
una din imaginile găsite în directorul Atestat_06 creat la punctul 5.

7. Pentru imaginea salvată anterior stabiliţi proprietatea de ReadOnly.

8. Realizaţi următoarea structură arborescentă :

Calculatorul

Unitate Unitate de Dispozitive


Centrală Memorie Periferice

Dispozitive Dispozitive
de Intrare de Iesire

140
Probleme pentru ATESTAT 2013

Subiectul nr. 7
1. Creaţi un document pe care să-l formataţi astfel:
 Dimensiunea hârtiei – A4;
 Marginile: Top = 1 cm, Bottom = 1 cm, Left = 1 cm, Right = 1,5 cm, Gutter = 2 cm;
 Poziţie Gutter: Top;
2. Orientarea paginii: Landscape. Adăugaţi
documentului antet şi subsol
 Antetul să conţină numele vostru în partea stângă scris cu Courier New, 14, Bold, iar la
dreapta data inserată automat;
 Subsolul paginii să conţină la stânga numele şcolii voastre iar pe centru numărul
paginii inserat automat.

3. Realizaţi: (1p)

Jocurile olimpice 2012


4. Realizaţi:

5. Creaţi următorul tabel:

Medalia Nume sportiv Sport


Alin Moldoveanu Tir
Aur
Sandra Izbașa Gimnastică
Alina Dumitru
România la Jocurile olimpice 2012

Judo
Corina Căprioriu
Roxana Cocoș Haltere
Rareș Dumitrescu
Argint
Tiberiu Dolniceanu
Scrimă
Florin Zalomir
Alexandru Sirițeanu
Cătălina Ponor Gimnastică
Diana Bulimar
Diana Maria Chelaru
Larisa Iordache Gimnastică
Bronz
Sandra Izbașa
Cătălina Ponor
Răzvan Martin Haltere

141
Probleme pentru ATESTAT 2013

6. Creaţi un director Atestat_07 şi salvaţi documentul cu numele Jocurile olimpice 2012.(1p)


7. Căutaţi cu ajutorul unui motor de căutare imaginiunul dintre sportivii medaliați și inserați-o
în coloana liberă din tabel.
8. Realizați următoarea organigramă.

Director
executiv

Compartiment Compartiment Compartiment Compartiment


juridic sport tabere buget plăți

Contabilitate Resurse umane

Subiectul nr. 8
1. Creaţi un document pe care să-l formataţi astfel:
 Dimensiunea hârtiei: A4;
 Marginile: Top = 1 cm, Bottom = 1 cm, Left = 2,3 cm, Right = 2,3 cm,
Gutter = 1 cm;
 Poziţie Gutter: Left;
 Orientarea paginii: Landscape.

2. Adăugaţi documentului antet şi subsol


 Antetul să conţină centrat numele şcolii voastre scis cu Castellar, 15,
subliniat şi îngroşat;
 Subsolul paginii să conţină la stânga numărul paginii, iar la dreapta data
inserată automat.

3. Realizaţi:

Figuri geometrice

142
Probleme pentru ATESTAT 2013

4. Realizaţi:

Romb
Cilindru
Triunghi
echilateral

5. Inseraţi în partea dreaptă a antetului una din figurile create la punctul 4.

6. Creaţi următorul tabel. Numerotarea va fi automată. Se va utiliza fontul


Tahoma.

Note la
GEOMETRIE

geometrie
Nr. Numele şi
Media
Opţional
În plan

spaţiu

Crt prenumele
În

1. Popescu Maria 7 9 10
2. Mihai Daniel 9 7 5
3. Ionescu Diana 10 8 9

7. Adăugaţi alte două înregistrari la finalul tabelului, cu datele corespunzătoare


conform tabelului. Ştergeţi apoi înregistrarea a doua.
8. Calculaţi, folosind o formulă automată, media notelor în coloana Media.
Ordonaţi datele din tabel descrescător după medie.
9. Salvaţi documentul cu numele Dvs. în directorul Atestat_08 creat pe
desktop. Tot în acest director salvaţi o copie a documentului creat anterior cu
numele Copie, în format .rtf.

143
Probleme pentru ATESTAT 2013

Subiectul nr. 9
1. Creaţi un document Word cu numele Dvs.:
 Dimensiunea hârtiei: A4;
 Marginile: Top = 1,5 cm, Bottom = 1 cm, Left = 1,5 cm, Right = 1,5 cm,
Gutter = 1 cm;
 Poziţie Gutter: Left;
 Orientarea paginii: Landscape.

2. Pe prima pagină a documentului redactati o cerere conform modelului de


mai jos. Respectaţi aranjarea în pagină specifică unei cereri şi formatările din
exemplu. Spaţierea între rânduri – la două rânduri.

Domnule Director,

Subsemnatul(a) ___________________________, elev(ă) în clasa a


_______, profil __________, la ____________________________________,
vă rog să binevoiţi a-mi aproba susţinerea examenului de atestare a
competenţelor profesionale în informatică.
Vă mulţumesc,

Data Semnătura,

Domnului Director al __________________________________

3. Orientaţi pagina a doua a documentului tip Portrait şi realizaţi următoarea


listă,
 Dive et Impera

 Greedy
o Backtracking
☺ Branch and Bound

4. Pentru textul Divide et Impera inseraţi comentariul: Aceasta este o tehnică


de programare
1
𝑥
5. Editati următorul exerciţiu: lim 𝑒 𝑙𝑛(1+𝑓(𝑥))
𝑥→0

144
Probleme pentru ATESTAT 2013

6. Realizaţi:

7. Salvaţi documentul pe Desktop, în directorul Atestat_09.Creaţi, în


directorul Atestat_09, subdirectoarele:
Structuri de date,
Tehnici de programare
Structuri arborescente.
8. Copiaţi în fişierul copie.doc cererea redactată la punctul 2.
9. Arhivaţi documentele dindirectorul My Documents. Salvaţi arhiva cu
numeleDocumente.rarîn subdirectorul Structuri de date.

Subiectul nr. 10
1. Creaţi un document pe care să-l formataţi:
 Mărimea paginii Letter
 Marginile: Top = 2 cm, Bottom = 2 cm, Left = 2,5 cm, Right = 1,5cm.
 Orientarea paginii: Portret.

2. Adăugaţi documentului antet şi subsol


 Antetul să conţină numele vostru în partea dreaptă scris cu Courier New,
10, Bold, Italic şi numărul de pagină inserat automat;
 Subsolul paginii să conţină textul Atestat profesional aliniat centrat.

3. Copiaţi cu ajutorul Help-ului două paragrafe pe care să le formataţi pe trei


coloane cu o linie de separaţie între ele, spaţierea dintre coloane de 2 cm.)

4. Realizaţi cu fontul Monotype Corosiva, 28, Shadow, scalate 150%:


BACALAUREAT2013

5. Inseraţi nota de subsol „To take or not to take ” cuvântului BACALAUREAT.

6. Realizaţi următorul tabel:

145
Probleme pentru ATESTAT 2013

NR. NUMELE ŞI
Semestrul I Semestrul II
CRT PRENUMELE
M1 M2 M3 M1 M2 M3 M4
1. Catargiu Ş.
2. Flutur A.
3. Croitoru A.

7. Faceţi o copie tabelului de mai sus în care


 schimbaţi chenarul exterior cu alt tip de linie;
 sortaţi datele alfabetic după nume şi prenume;
 realizaţi numerotarea automată.

8. Salvaţi documentul cu numele Dvs. în directorul Atestat_10.

Realizaţi următoarea structură arborescentă:

Atestat

Office Programare BD

9. Arhivaţi directorul Atestat_10 cu numele Ex.rarpe Desktop.

Subiect nr. 11
1. Deschideţi aplicaţia de calcul tabelar. Într-un nou registru, redenumiţi prima
foaie de calcul – Manuale școlare.
2. Aplicaţi următoarele setări de pagină: orientarea hârtiei – tip vedere;
dimensiunea hârtiei – A4 ; marginile: sus – 1,5 cm, jos – 1,5 cm, stânga –
2,5 cm, dreapta – 2 cm.
3. Introduceţi în antet, aliniat la dreapta data și ora curentă.
4. În domeniul de celul C2:G2 scrieți textul „LIBRĂRIA ART – Stocul de
manuale școlare”. Formatați textul cu fontul Monotype Corsiva,
dimendiunea 17, culoare roșie.
5. Introduceţi, începând din celula B3, următoarele date:

146
Probleme pentru ATESTAT 2013

Nr. Titlul Clasa Preț Bucăți Preț total Număr Stoc


crt manualului manuale
vândute
1 Matematică a IX- a 18,5 100 100
2 Fizică a X- a 20 200 50
3 Chimie a IX- a 11 300 20
4 Biologie a X- a 12,3 50 10
5 Informatică a X- a 15,7 20 20

Aplicați-i tabelului un contur exterior cu linii duble de culoare verde și linii


interioare punctate de culoare neagră.

6. Folosind formule și funcții completaţi coloanele rămase libere astfel:


- Preț total = Preț*Bucăți

𝑺𝒕𝒐𝒄 𝒆𝒑𝒖𝒊𝒛𝒂𝒕, 𝑑𝑎𝑐ă (𝐵𝑢𝑐ăț𝑖 − 𝑁𝑢𝑚ă𝑟 𝑚𝑎𝑛𝑢𝑎𝑙𝑒 𝑣â𝑛𝑑𝑢𝑡𝑒) = 0


𝑆𝑡𝑜𝑐 = {
Î𝒏 𝒔𝒕𝒐𝒄, 𝑑𝑎𝑐ă (𝐵𝑢𝑐ăț𝑖 − 𝑁𝑢𝑚ă𝑟 𝑚𝑎𝑛𝑢𝑎𝑙𝑒 𝑣â𝑛𝑑𝑢𝑡𝑒) > 0

7. Calculaţi un total al tuturor manualelor (al bucăților) și scrieți rezultatul în


celula G10

8. Sortaţi datele din tabel după coloana Preț, ascendent.

9. Copiaţi datele din coloanele Nr.crt, Titlul manualului și Stoc, în a doua


foaie de calcul, începând cu celula C5.
10. Pe baza datelor din coloanele Titlul manualului și Preț creaţi o diagramă de
tip coloană. Stabiliţi titlurile:
- pentru diagramă “Total manuale pe discipline”. Titlul va fi
scris cu fontul Arial, dimensiunea 14, culoarea albastră.
- axa X – Manuale școlare;
- axa Y – Preț;
Legenda să fie scrisă în partea de jos a diagramei. Amplasaţi diagrama
într-o foaie nouă cu numele “Grafic_manuale”.

11. Salvaţi fişierul cu numele Atestat_Office.xls (xlsx).

147
Probleme pentru ATESTAT 2013

Subiect nr. 12
1. Deschideţi aplicaţia de calcul tabelar. Într-un nou registru, redenumiţi prima
foaie de calcul – Societatea Sicora.

2. Aplicaţi următoarele setări de pagină: orientarea hârtiei – tip portret;


dimensiunea hârtiei – A4; marginile –format Îngust.

3. Introduceţi în B4:D4 cu ajutorul opțiunii Îmbinare si centrare, textul Date


personale angajați
4. Introduceţi, începând din celula A7, următoarele date:
Nr. Nume Prenume Vârsta telefon
crt.
1. Ivănescu Maria 45 329148
2. Clem Aura 37 258239
3. Șuiu Aurelia 29 152152
4. Anghel Ionel 32 185326
5. Pânzaru Vasile 20 158546
6. Stoian Lucian 37 158886
7. Voloc Laurențiu 21 829891

- domeniul A8:A14 se va completa prin generare unui șir de tip


numeric.

5. Formatări:
- datele de tip textDate personale angajați: font Arial, dimensiunea
13.5, culoarea albastru
- datele din tabel : font Times New Roman, dimensiune 12, culoare
mov
- celulele tabelului vor avea bordura simpla la exterior si bordura cu
linie întrerupta la interior

6 .Adăugați tabelului o coloana numita Situație. Dacă vârsta este mai mare
decât 22, atunci angajat permanent, altfel angajat provizoriu.

7.Asociați tabelului (mai puţin ultimilor 2 coloane) o diagrama de tip Linie 2D


cu marcaje. Diagrama va avea titlul Vârsta angajați.

8.Copiaţi datele din tabel în foaie de calcul 2, începând cu celula A7.


Redenumiți foaia de calcul rezerva, iar culoarea filei sa fie verde.

148
Probleme pentru ATESTAT 2013

9.Sortați datele din foaia de calcul rezerva după coloana Nume descendent.
Dacă numele este Anghel , celula respectiva sa se formateze cu text roșu.

10.Salvaţi fişierul cu numele Atestat_Office.xls (xlsx).

Subiect nr. 13
1.Deschideţi aplicaţia de calcul tabelar. Într-un nou registru, redenumiţi prima
foaie de calcul - Testare.

2.Aplicaţi următoarele setări de pagină: orientarea hârtiei – tip portret;


dimensiunea hârtiei – A4; fiecare dintre marginile sus, jos, stânga, dreapta – 2
cm.

3.Introduceţi în antet, aliniat la centru, textul Note la testul de Istorie, Clasa a


XII-a, iar în subsol, centrat, data şi ora, iar la dreapta Pagina 1.

4.Introduceţi, începând din celula C4, următoarele date:


Nr. crt.

Nota
Elev

1. elev 1 5
2. elev 2 6
3. elev 3 8
4. elev 4 9
. ….. .
. ….. .
30. elev 30 6

Pentru datele din primele doua coloane folosiţi facilitatea


de autocompletare sir. Pentru ultima coloana introduceţi note aleatoare
cuprinse in intervalul 4-10. Se va asocia și un mesaj de intrare pentru aceasta
coloana Atenţie! Se vor introduce note intre 4 si 10.

5.Datele din domeniul C4:E34 vor avea o bordura cu linie simpla, de culoare
verde la interior si exterior. Capul de tabel va avea fontul Arial Black,
dimensiunea 13, iar corpul de tabel fontul Lucida Fax, dimensiunea 12.

149
Probleme pentru ATESTAT 2013

6.Calculaţi media clasei la acest test. Media va fi afişata cu 2 zecimale, culoare


roşie în celula F5.

7. Inseraţi ca titlu, in domeniul B2:F2 textul „Testare sumativă - Istorie, clasa a


XII-a”, centrat. Formataţi textul cu font Impact, culoare verde, dimensiune 12.

8.Determinaţi in celulele F6 si F7 cu ajutorul unei funcţii Excel, cate note din


sir sunt de 6 si cate sunt de 7.

9.Pe baza coloanelor Elev şi Nota, realizaţi o diagrama de tip bară 3-D grupată,
culoare maro. Diagrama va avea titlul Note elevi.

10.Salvaţi fişierul cu numele testare.xls (xlsx)

Subiect nr. 14
1.Deschideţi aplicaţia de calcul tabelar. Într-un nou registru, redenumiţi prima
foaie de calcul - Medicamente.

2.Aplicaţi următoarele setări de pagină: orientarea hârtiei – tip vedere;


dimensiunea hârtiei – A4; marginile: sus – 2 cm, jos – 2 cm, stânga – 2,5 cm,
dreapta – 2,5 cm.

3.Introduceţi, începând din celula A3, următoarele date (a se respecta forma


celulelor A3:H3):
Nr. Preț Preț cu Nr. Formă Valoare Ob
crt. Denumire unitar TVA bucăți prezentare totală s
1 Aspirină Cps
2 Nurofen Cps
3 Aspacardin Cps
4 Bepanthen unguent
5 Calciu efervescent Cps
6 Lecitină granule
TOTAL
Minim
Maxim
Nr. med. Cps
150
Probleme pentru ATESTAT 2013

4.Completați tabelul după următoarele criterii:


-Celulele C4:C9 vor avea un criteriu de validare a datelor, neputând fi
introduse valori mai mari sau egale cu 100. In cazul încălcării regulii să
apară mesajul de oprire ”valoare>100” (1 p)
-TVA este 24%
-Valoarea totală este valoarea obținută din înmulțirea prețului cu TVA și
nr. Bucăți.
5. Introduceţi o formulă în celula C11 pentru a calcula suma grupului de celule
C4 : C9. Copiaţi formula din celula C11 în celulele D11, E11 și G11
6. Introduceţi o formulă în celula C13 pentru a calcula valoarea minimă a
grupului de celule C4: C9. Copiaţi formula din celula C13 în celulele D13, E13
și G13.
7. Formatați celulele din grupul B4:F7 astfel încât să prezinte simbolul
monetar lei.
8. Completați celulele H4:H9 astfel: dacă prețul este <50 cu “autohton”,
contrar cu “import”.
9. Realizați un grafic de tip coloană pe baza datelor din celulele B3:C6.
Graficul va avea denumirea Vânzări, pe fiecare coloană fiind afișată valoarea.
Mutați graficul sub linia 20 a foii de lucru.
10. Introduceţi o formulă în celula C14 pentru a calcula valoarea minimă a
grupului de celule C4 : C9. Copiaţi formula din celula C14 în celulele D14, E14
și G14.
11. În celula C15 introduceți o formula care numără câte medicamente au forma
de prezentare capsule
12. Salvați registrul cu denumirea Atestat_Office

Subiect nr. 15
1.Deschideţi aplicaţia de calcul tabelar. Într-un nou registru, redenumiţi prima
foaie de calcul – Grădina_zoologică.

2.Aplicaţi următoarele setări de pagină: orientarea hârtiei – tip vedere ;


dimensiunea hârtiei – A4; marginile: sus – 1,5 cm, jos – 1,5 cm, stânga – 2
cm, dreapta – 2 cm.

3.Introduceţi, începând din celula A1, următoarele date:


151
Probleme pentru ATESTAT 2013

Recensământ 2012
Nr. Nr. TOTAL
masculi femele Nr. pui specie observații
Urși 5 6 12
Mistreți 13 14 23
Vulpi 8 4 0
Căprioare 3 5 4
Iepuri 25 30 45
Lupi 11 15 9
Capre 12 18 15

Total
Maxim
Minim

4.Completați tabelul după următoarele criterii:


 Celulele B4:D10 vor avea un criteriu de validare a datelor, neputând fi
introduse valori negative. In cazul încălcării regulii să apară mesajul
”valoare negativă”
 Introduceți în celula E4 o formula care calculează totalul animalelor pe
specie. Extindeți formula pentru celulele E5:E10.

5. Introduceţi o formulă în celula B13 pentru a calcula suma grupului de celule


B4 : B10. Copiaţi formula din celula B13 în celulele C13:E13.

6. Introduceţi o formulă în celula B14 pentru a calcula valoarea maximă a


grupului de celule B1 :B10. Copiaţi formula din celula B14 în celulele C14:E14

7. Introduceţi o formulă în celula B15 pentru a calcula valoarea minimă a


grupului de celule B5 : B10. Copiaţi formula din celula B15 în celulele
C15:E15
8. În celula F4 introduceți o formula prin care sa se afișeze textul ”pericol
dispariție” dacă nr. de pui este 0, ”normal” pentru nr pui între 1-10 și
”suprapopulare” pentru nr. pui mai mare de 10. Copiați formula în celulele
F5:F10

152
Probleme pentru ATESTAT 2013

9. Realizați un grafic de tip coloană 3D pe baza datelor din celulele A4:D11.


Graficul va avea legenda plasată în partea dreaptă, pe fiecare coloană fiind
afișată valoarea. Mutați graficul în a doua foaie de lucru a registrului.
10. Inserați în foaia de lucru o imagine din colecția Office.

11. Sortați descrescător valorile din celulele E4:E11


12. Salvați registrul cu denumirea Atestat_Office

Subiect nr. 16
1. Cu ajutorul aplicației Microsoft Excel realizați un tabel cu structura de mai
jos:

2. Centrați pe orizontală și verticală denumirea coloanelor.


3. Formatați celulele din domeniul A1:D1 astfel încât textul scris în fiecare
celulă să fie așezat pe două rânduri în cadrul aceleiași celule.

4. Completaţi tabelul cu 5 înregistrări.


5. a) Adăugaţi după coloana Preţul unitar o coloană cu denumirea Valoarea.

b) Actualizaţi tabelul prin calcularea valorilor din coloana Valoarea cu


ajutorul formulei:
Excel =(Cantitatea*Pretul unitar)
6. a) Marcați fiecare celulă a tabelului printr-un chenar cu linie simplă (creare
borduri).
b) Coloraţi fiecare coloană cu altă culoare.
7. Construiţi un grafic pe baza datelor din tabelul actualizat.

153
Probleme pentru ATESTAT 2013

8. Adăugaţi o linie la sfârşitul tabelului.


a) Pe această linie, în celula din coloana Cantitatea se va scrie numărul
total de bucăţi - cu ajutorul formulei Excel sau a funcției =SUM( )
b) În celula din coloana Preţul unitar se va scrie preţul unitar cel mai mare
- cu ajutorul formulei Excel (funcția =MAX( )).
c) Apoi, în celula din coloana Valoarea se va scrie suma totală - cu ajutorul
formulei Excel (funcția =SUM( )).
9.Marcaţi ultima linie cu un chenar cu linie dublă.
10.Salvaţi tabelul şi închideţi aplicaţia.

Subiectul nr.17
1.Creaţi un fişier atestat.xls. Introduceţi tabelul de mai jos în foaia de calcul
Excel. (0,5p)

2.Denumirea coloanelor trebuie să fie centrată pe vericală şi orizontală.

3.Completaţi tabelul cu 5 înregistrări.

4.Numerotarea din coloana Nr.Crt. se va face automat.

5.Adăugaţi după coloana Preţul unitar o coloană cu denumirea Valoarea şi


actualizaţi tabelul prin calcularea valorilor din coloana Valoarea cu ajutorul
formulei Excel.

6.Coloraţi fiecare coloană cu altă culoare.

154
Probleme pentru ATESTAT 2013

7.Construiţi un grafic pe baza datelor din tabelul actualizat.

8.Adăugaţi o linie la sfârşitul tabelului. Pe această linie, în celula din coloana


Cantitatea se va scrie - cu ajutorul formulei Excel - numărul total de
bucăţi, în celula din coloana Preţul unitar se va scrie - cu ajutorul
formulei Excel - preţul unitar cel mai mare, iar în celula din coloana
Valoarea se va scrie - cu ajutorul formulei Excel - suma totală.

9.Marcaţi ultima linie cu un chenar cu linie dublă.

10.Salvaţi tabelul şi închideţi aplicaţia.

Subiectul nr. 18

1. Creaţi un fişier atestat.xls. Introduceţi tabelul de mai jos în foaia de calcul


Excel.

2. Denumirea coloanelor trebuie să fie centrată pe vericală şi orizontală.

3. Completaţi tabelul cu 5 înregistrări.

4. Numerotarea din coloana Nr.Crt. se va face automat.

5. Adăugaţi după coloana Cheltuieli o coloană cu denumirea Profit şi


actualizaţi tabelul prin calcularea valorilor din coloana Profit ca diferenţă
între Vânzări şiCheltuieli.

155
Probleme pentru ATESTAT 2013

6. Coloraţi fiecare linie cu altă culoare.

7. Construiţi un grafic pe baza datelor din tabelul actualizat.

8. Adăugaţi o linie la sfârşitul tabelului. Pe această linie, în celula din coloana


Vânzări se va scrie - cu ajutorul formulei Excel – valoarea cea mai mică
din coloană, în celula din coloana Cheltuieli se va scrie - cu ajutorul
formulei Excel – valoarea cea mai mare din coloană, iar în celula din
coloana Profit se va scrie - cu ajutorul formulei Excel – profitul total.

9. Marcaţi ultima linie cu un chenar cu linie îngroşată.

10. Salvaţi tabelul şi închideţi aplicaţia.

Subiectul nr. 19

1. Creaţi un fişier atestat.xls. Introduceţi tabelul de mai jos în foaia de calcul


Excel.

2. Denumirea coloanelor trebuie să fie centrată pe vericală şi orizontală.

3. Completaţi tabelul cu 5 înregistrări.

4. Numerotarea din coloana Nr.Crt. se va face automat.

5. Adăugaţi după coloana Nota3 o coloană cu denumirea Media şi o coloana


Media finală şi actualizaţi tabelul prin calcularea valorilor din cele două

156
Probleme pentru ATESTAT 2013

coloanecu ajutorul funcţiilor Excel. Media finală se va calcula prin


rotunjirea numărului din coloana Media.

6. Mediile finale mai mici decât 5 se vor colora automat cu roşu.

7. Filtraţi datele astfel încât să fie vizibili doar elevii care au media finală 10.

8. Filtraţi datele astfel încât să fie vizibili doar elevii care au media finală
cuprinsă între 6 şi 8

9. Coloraţi celulele din antet cu o nuanţă de gri.

10. Salvaţi tabelul şi închideţi aplicaţia.

Subiectul nr. 20

1. Creaţi un fişier atestat.xls. Introduceţi tabelul de mai jos în foaia de calcul


Excel.

2. Denumirea coloanelor trebuie să fie centrată pe vericală şi orizontală.


3. Completaţi tabelul cu 5 înregistrări.
4. Numerotarea din coloana Nr.Crt. se va face automat.
5. Completaţi situaţia şcolară astfel: promovat dacă media este cel puţin 5 şi
corigent în caz contrar.
6. Textul corigent se va colora automat cu roşu.
7. Construiţi un grafic pe baza datelor din tabel.
(1,5p)

157
Probleme pentru ATESTAT 2013

8. Adăugaţi o linie la sfârşitul tabelului. Pe această linie, în celula din coloana


Media se va scrie - cu ajutorul formulei Excel – media cea mai mare, iar în
celula din coloana Situaţia şcolară câţi elevi au promovat.

9. Coloraţi antetul tabelului cu o nuanţă de gri.

10. Salvaţi tabelul şi închideţi aplicaţia.

Subiect nr. 21

1. Porniţi aplicaţia pentru prezentări, deschideţi o nouă prezentare şi inseraţi în


aceasta șase noi diapozitive.
2. Primul diapozitiv va fi de tip titlu şi va conţine titlul „Anul 2013 –
Anuleuropean al cetăţenilor” şi subtitlul „Numele si prenumele” elevului
care realizează prezentarea.
3. Al doilea diapozitiv va fi de tip necompletat și va cuprinde:
caseta text drept titlu cu următorul conţinut: – „Priorităţi pentru anul
2013” va fi scris cu font Rockwell, culoare albastră, dimensiune 54;
3 forme automate sub forma de dreptunghiuri de culoare galbenă, linie
de contur albastră și care vor avea adăugate următoarele texte:
 Oportunităţi pentru cetăţeni
 Participarea la viața UE
 Programe pentru tineri

4. Al treilea diapozitiv va fi de tipul titlu si tabel:


titlu: Oportunităţi pentru cetăţeni
un tabel ce conţine câteva oportunităţi oferite de UE şi numărul de
oameni care beneficiază de acestea.

5. Diapozitivul patruva conţine o imagine potrivită cu titlul „Participarea la


viața UE”. Imaginea va avea dimensiunile: înăţime 12 cm și lăţime 23cm.
Aplicaţi un efect de animaţie de intrare a acesteia.

6. Al cincilea diapozitiv va fi de tip titlu și nomogramă și va cuprinde:


titlu: Programe pentru tineri
158
Probleme pentru ATESTAT 2013

nomograma:

7. Realizaţi setarea celor trei forme automate din diapozitivul 2 astfel încât
acestea să fiebutoane de navigare. Primul face trecerea către diapozitivul3, al
doilea către diapozitivul 4, iar cel de-al treilea către diapozitivul 5.

8. Pe diapozitivele 3, 4 și 5 inseraţi butoane de acţiune pentru a realiza


întoarcerea la diapozitivul 2.

9. În diapozitivul şase se vor scrie câteva concluzii în maxim 2 rânduri cu


fontul Algerian, dimensiunea 28, culoarea maro și mesajul „Vă mulţumesc!”
fontul Script MT Bold, dimensiunea 40, culoare galbenă.

10. Adăugaţi întregii prezentări ca design template un şablon ales de Dvs. şi


aplicaţi un efect de tranziţie aleatoare întregii prezentări. Salvaţi fişierul cu
numele Cetatenie europeana.

Subiect nr. 22

1. Porniţi aplicaţia pentru prezentări, deschideţi o nouă prezentare şi inseraţi în


aceasta cinci noi diapozitive.

2. Salvaţi prezentarea cu numele atestat.ppt în folderul cu numele vostru apoi


în format rtf (rich text format - outline / rtf) ca atestat.rtf și închideți cele
două fișiere.

159
Probleme pentru ATESTAT 2013

3. Deschideţi fişierul atestat.ppt și introduceţi numele vostru în antet și


numărul de pagină în subsol. Titlul primului diapozitiv să fie ATESTAT
2012iar subtitlul INFORMATICĂ
4. Aplicaţi prezentării atestat.ppt formatul implicit (design template) urban
aflat în temele de bază.

5. Folosind o funcție specială inserați o imagine din miniatură o singură data în


colțul din dreapta al tuturor diapozitivelor cu excepția celui de tip titlu.

6. În diapozitivul 2 inserați următorul tabel:

Nume și prenume Nota Româna Nota Matematica


Ionescu Constantin 7 9
Popescu Ionel 8 6
Irimia Irina 9 8
Popa Vasile 6 7
7. În diapozitivul 3 inserați următoarea organigramă:

CLASA
ELEV1 ELEV2 ELEV3
Adăugați doi elevi în organigramă
8. În folia 4 schimbaţi în galben culoarea de umplere a fundalului

9. Creaţi o diagramă cu coloane folosind datele din tabelul din diapozitivul 2 și


mutați-o în diapozitivul 5.

10. Aplicaţi un efect de tranziţie între foliile prezentării (se acceptă setarea
automată).

160
Probleme pentru ATESTAT 2013

Subiect nr. 23

1. Porniţi aplicaţia pentru prezentări, deschideţi o nouă prezentare şi inseraţi în


aceasta nouă noi diapozitive.

2. Primul diapozitiv va fi de tip titlu şi va conţine titlul „Suceava, loc de


popas”.
3. Al doilea diapozitiv va fi de tip titlu şi text. Titlul – „Obiective turistice” va
fi scris cu font Poor Richard, culoare maro, dimensiune 54. Textul va
conţine:
Ruinele Palatului Domnesc
Complexul Muzeal Bucovina
Muzeul Satului din Bucovina
Muzeul Ciprian Porumbescu
Muzeul Etnografic al Bucovinei
Parcul central
Muzeul de istorie
Casa de cultura
Aplicaţi un efect de animaţie de tip Intrare – Rombtitlului şi un efect de
animație de tip Intrare – Dezveliremarcatorilor de mai sus.

4. În diapozitivul trei inseraţi un tabel ce conţine numărul de vizitatori


estimați într-un an calendaristic pentru obiectivele turistice enumerate mai
sus.
5. Folosind datele din diapozitivul precedent, adăugaţi în diapozitivul patru o
diagramă de tip “Structura radială”. Titlu diagramei va fi Obiective turistice,
al axei X – numele obiectivului și al axei Z – numărul de vizitatori.

6. Diapozitivul cinci va conţine o imagine potrivită cu titlul din diapozitivul 1


care va fi încorporata în fundal. Adăugați apoi o casetă text ce va conține
textul Oamenii au înfăţişarea locurilor în care s-au născut, scris cu fontul
Castellar, culoarea galbenă, dimensiune 40.
7. În diapozitivul şase inseraţi două butoane de acţiune. Primul face trecerea
către următorullink http://www.turistik.ro/romania/suceava/obiective-
turistice-suceava, iar cel de-al doilea către ultimul diapozitiv. Inseraţi în
diapozitivul 9, textul „Vă invita la SUCEAVA!” scris cufontulInformal
Roman, dimensiunea 60 și stema Sucevei.
(1 p)
161
Probleme pentru ATESTAT 2013

8. În diapozitivul şapte inseraţi două gifuri animate despre un oraș.

9. În diapozitivele 8 inseraţi un SmartArt – Ciclic de forma celui de mai jos.

10. Adăugaţi fiecărui diapozitiv un fundal diferit (mai puțin diapozitivului 5) şi


aplicaţi o tranziţie aleatoare întregii prezentări. Salvaţi fişierul cu numele
Suceava.

Subiect nr. 24

1. Porniţi aplicaţia pentru prezentări, deschideţi o nouă prezentare şi inseraţi în


aceasta șase noi diapozitive.
2. Primul diapozitiv va fi de tip titlu şi va conţine titlul „Excursii” şi subtitlul
„Ofertă 2013”.

3. Al doilea diapozitiv va fi de tip titlu şi text. Titlul – „Ofertă destinații


turistice” va fi scris cu fontul Comic Sans MS, culoare verde, dimensiune
40. Textul va fi scris cu marcatori și va conţine:
Destinații turistice în România
Destinații turistice în străinătate
Aplicaţi un efect de animaţie de intrare titlului, astfel încât acesta să apară
din dreapta.
4. Adăugați în diapozitivul doi o notă de subsol cu textul “Diapozitiv oferte”.

5. În diapozitivul trei inseraţi următorul tabel:


DESTINAȚII PREȚ
162
Probleme pentru ATESTAT 2013

Paris 400
Londra 300
Brașov 100
Folosind datele din tabel, inserațio diagramă de tip “linie”. Modificaţi
culoarea de fundal a graficului în galben.

6. Diapozitivul patru va conţine o imagine cu Marea Neagră. Transformați


imaginea într-o imagine de tip Basic Shapes – Sun. Rotiți imaginea cu un
efect 3D pe axa y cu 300 .
7. În diapozitivul cinci inseraţi o ilustraţie SmartArt după modelul celei de
mai jos. (1 p)

8. În diapozitivul șase inseraţi un buton de acțiune ce va face legătura cu


primul diapozitiv și o formă predefinită de tip săgeată ce va face legătura cu
al treilea diapozitiv.
9. Adăugaţi întregii prezentări ca design template un şablon ales de dvs. şi
aplicaţi un efect de tranziţie întregii prezentări.Salvaţi fişierul cu numele
Oferta de excursii.

Subiect nr. 25

1. Porniţi aplicaţia pentru prezentări, deschideţi o nouă prezentare.


2. Primul diapozitiv va fi de tip titlu şi va conţine titlul „Cafea” şi subtitlul
„Istoria cafelei”.
3. Adăugați un al doilea diapozitivva fi de tip titlu şi text. Titlul – „Tipuri de
cafea”. Textul va conţine:

163
Probleme pentru ATESTAT 2013

Arabică
Robusta
Liberica
Maragogype
Aplicaţi un efect de animaţie titlului şi marcatori, la alegere, pentru fiecare
din tipurile de cafea.

4. Adăugați un nou diapozitiv în care inseraţi un tabelul cu primii 5 producători


de cafea ai lumii.

Țară To. cafea


Brazilia 2.179.270
Vietnam 990.000
Indonezia 762.006
Columbia 682.580
Mexic 310.861
5. Folosind datele din diapozitivul precedent, adăugaţi în următorul
diapozitivulo diagramă de tip coloană, pe fiecare din acestea fiind afișate
valorile.
6. În următorul diapozitiv de tipul ”Titlul și două conținuturi” introduceți la
titlul ”Efectele cafelei” iar în cele două zone pentru conținuturi ”Efecte
pozitive” și ”Efecte negative” ale cafelei.
7. Inserați un nou diapozitiv care sa cuprindă cuprinsul prezentării. Mutați
diapozitivul pe poziția 2 în prezentare.

8. Inserați o singură dată, folosind o funcție specială, în colțul din dreapta jos
imaginea următoare astfel încât aceasta să apară pe fiecare diapozitiv:

164
Probleme pentru ATESTAT 2013

9. Inseraţi butoane de acţiune în prezentare astfel. Pe primul diapozitiv un


buton de trecere către următorul, pe diapozitivele 2-5 două butoane, unul de
trecere către următorul, celălalt de trecere către anteriorul. Ultimul diapozitiv
are un singur buton de trecere către anteriorul.
10. Adăugaţi întregii prezentări ca design template un şablon ales de voi şi
aplicaţi un efect de tranziţie întregii prezentări. Salvaţi fişierul cu numele
Atestat_Office.pptx

Subiect nr. 26

1. Porniţi aplicaţia pentru prezentări, deschideţi o nouă prezentare.


(0,5p)
2. Primul diapozitiv va fi de tip titlu şi va conţine titlul „Călătorul” şi subtitlul
„Firmă de transport intern și extern”.

3. Adăugați un al doilea diapozitiv va fi de tip titlu şi text. Titlul – „Trasee”.


Textul va conţine:
Suceava-Roma
Suceava- Madrid
Suceava-Paris
Suceava-Londra
Aplicaţi un efect de animaţie titlului şi marcatori, la alegere, pentru fiecare
din trasee.
4. Adăugați un nou diapozitiv ”Prețuri” în care inseraţi un tabelul cu prețul dus-
întors al călătoriilor:

Ruta Adulți Copii Pensionari


Suceava-Roma 90€ 30€ 45€
Suceava-Madrid 150€ 50€ 75€
Suceava-Paris 130€ 40€ 65€
Suceava-Londra 180€ 60€ 90€
5. Folosind datele din diapozitivul precedent, adăugaţi în următorul
diapozitivulo diagramă de tip coloană, pe fiecare din acestea fiind afișate
valorile.
6. În următorul diapozitiv ”Organigrama” realizați organigrama firmei de
transport
165
Probleme pentru ATESTAT 2013

manager

director director de
financiar marketing

manager de
contabil casier
marketing

7. Inserați un nou diapozitiv ”Cuprins” care să conțină cuprinsul prezentării.


Mutați diapozitivul pe poziția 2 în prezentare.

8. În diapozitivul ”Cuprins” realizați pentru fiecare capitol câte un hyperlink


către diapozitivul corespunzător.

9. Inserați o singură dată, folosind o funcție specială, în colțul din dreapta jos
imaginea următoare astfel încât aceasta să apară pe fiecare diapozitiv:

10. Adăugaţi întregii prezentări ca design template un şablon ales de voi şi


aplicaţi un efect de tranziţie întregii prezentări. Salvaţi fişierul cu numele
Atestat_Office

Subiect nr. 27

1. Porniţi aplicaţia pentru prezentări, deschideţi o nouă prezentare.

2. Primul diapozitiv va fi de tip titlu şi va conţine titlul „Pensiunea Bistrița” şi


subtitlul „Prezentarea pensiunii și a împrejurimilor”.

166
Probleme pentru ATESTAT 2013

3. Adăugați un al doilea diapozitiv va fi de tip titlu şi text. Titlul – „Facilități”.


Textul va conţine:

General
recepţie deschisă nonstop, terasă,camere pentru nefumători, lift, check-
in/check-out express, seif, încălzire, cameră de bagaje, restaurant (à la
carte)
Activităţi
saună,masaj, tenis de masă,cadă cu hidromasaj, drumeţii

Aplicaţi un efect de animaţie titlului şi marcatori, la alegere, pentru fiecare


din trasee.

4. Adăugați un nou diapozitiv ”Prețuri” în care inseraţi un tabelul cu prețurile


practicate:

Condiții Maxim Preț (RON)


Cameră dublă Mic dejun inclus 2 pers. 225
Suită Mic dejun inclus 2 pers. 335
Suită superioară Mic dejun inclus 2 pers. 405
5. Adăugați un nou diapozitiv ”Profit” în care vor fi introduse sumele încasate
în ultimii 3 ani:

2010 (mii lei) 2011 (mii lei) 2012 (mii lei)


Profit 230.25 280.47 340.01
Folosind datele din diapozitivul precedent, adăugaţi în următorul
diapozitivulo diagramă radială, având afișate valorile pe grafic.

6. În următorul diapozitiv ”Organigrama” realizați organigrama pensiunii.

167
Probleme pentru ATESTAT 2013

7. Inserați un nou diapozitiv ”Cuprins” care să conțină cuprinsul prezentării.


Mutați diapozitivul pe poziția 2 în prezentare.

8. În primul diapozitiv realizați pentru titlul prezentării ”Pensiunea Bistrița” un


hyperlink către pagina de internet a acesteia: www.pensiunea-bistrița.ro.

9. Inserați o singură dată, folosind o funcție specială, în colțul din dreapta jos
imaginea unei flori,astfel încât aceasta să apară pe fiecare diapozitiv.

10. Adăugaţi întregii prezentări ca design template un şablon ales de voi şi


aplicaţi un efect de tranziţie întregii prezentări. Salvaţi fişierul cu numele
Atestat_Office.

Subiectul nr. 28

1. Porniţi aplicaţia pentru prezentări şi deschideţi o nouă prezentare.


2. Prima folie trebuie să fie de tip Titlu, să conţină textul „Angajatori de top”,
scris cu font Comic Sans MS, culoare roşie, dimensiune 30.
3. Adăugaţi explicaţia „Valabil pentru anul 2009” într-un dreptunghi rotunjit.
Pentru dreptunghi, setaţi culoarea verde, în nuanţe diferite, pentru umplere
linie.
4. Adăugaţi a doua folie. Pentru aspectul diapozitivului selectaţi Titlu şi text.
Titlul, Companii naţionale, va fi cu font Comic Sans MS, culoare roşie,
dimensiune 30, cu efect de umbră. Secţiunea text conţine:
 CFR Marfă

168
Probleme pentru ATESTAT 2013

 CFR Călători
 Hidroelectrica
 Poşta Română
Pentru text folosiţi formatul implicit.
5. A treia folie să aibă formatul “Titlu şi tabel”. Titlul-„Studiu comparativ”
va fi scris cu font Courier New, culoare roşie, dimensiune 30. Inseraţi
tabelul:

CFR Călători CFR Marfă Hidroelectica Poşta


Română
2008 300 50 200 100
2009 250 50 150 100
Adăugaţi explicaţia „mii angajaţi”, în oval, de culoare verde.
6. Folia a patra a prezentării trebuie să conţină următorul text „Călătoriţi
ieftin şi în siguranţă!” cu font Comic Sans MS, culoare roşie, dimensiune
30, aliniat centrat.
7. Adăugaţi acestei folii imaginea de mai jos. Imaginea va avea chenar violet
de tip Punct Linie, grosime 2 pct.

8. Folia cinci va conţine o diagramă de tip linie, pe baza datelor din folia trei.

9. Adăugaţi în ultimul diapozitiv un buton de acţiune care să permită saltul la


primul diapozitiv.

10. Aplicaţi, pentru toate diapozitivele, efectul de tranziţie Ştergere în jos şi


adăugaţi întregii prezentări, ca design template, un şablon ales de Dvs.

169
Probleme pentru ATESTAT 2013

Subiect nr. 29

1. Porniţi aplicaţia pentru prezentări, deschideţi o nouă prezentare şi inseraţi în


aceasta zece noi diapozitive.
2. Primul diapozitiv va fi de tip titlu şi va conţine titlul „Cursuri de formare”
şi subtitlul „2012-2013”.
3. Al doilea diapozitiv va fi de tip titlu şi text. Titlul – „Comunicare” va fi
scris cu font Papyrus, culoare albastră, dimensiune 50. Textul va conţine:
Tehnici de comunicare şi negociere
Teoria comunicării
Comunicare şi relaţii publice
Aplicaţi un efect de animaţie titlului şi marcatori, la alegere, cursurilor de
mai sus.
4. În diapozitivul trei inseraţi un tabel ce conţine numărul de cursanţi care au
solicitat înscriere pentru fiecare dintre cele trei cursuri.
5. Folosind datele din diapozitivul precedent, adăugaţi în diapozitivul patru o
diagramă de tip “linie”. Modificaţi culoarea graficului în verde.
6. Diapozitivul cinci va conţine o imagine potrivită cu titlul din diapozitivul 1.
Aplicaţi o linie de contur de culoare verde, grosime 6 pct şi un efect de
animaţie de intrare.
7. În diapozitivul şase inseraţi două butoane de acţiune. Primul face trecerea
către diapozitivul1 iar cel de-al doilea către ultimul diapozitiv. Inseraţi în
diapozitivul 10, folosind scrierea artistică, textul „Spor la lucru!”.
8. În diapozitivul şapte inseraţi o ilustraţie SmartArt după modelul celei de
mai jos.

9. În diapozitivele 8 şi 9 inseraţi formele

170
Probleme pentru ATESTAT 2013

8 9
respectiv

10. Adăugaţi întregii prezentări ca design template un şablon ales de Dvs. şi


aplicaţi un efect de tranziţie întregii prezentări. Salvaţi fişierul cu numele
Oferta de cursuri.

Subiectul nr. 30
1. Porniţi aplicaţia pentru prezentări şi deschideţi o nouă prezentare.

2. Inseraţi în prezentare şapte noi diapozitive.

3. Prima folie va fi de tip titlu şi va conţine titlul „Oferta locurilor de muncă”


şi subtitlul „pentru absolvenţii de liceu”.

4. A doua folie conţine textul – „Calendarul acţiunilor de promovare” (scris cu


font Papyrus, culoare albastră, dimensiune 50) şi tabelul de mai jos:

Nr. crt. Locaţia Data şi ora


1. Sediul Primăriei 15.01.2010, ora 16
2. Universitate – Sala de Sport 22.01.2010, ora 16
3. Sediul OPC 01.02.2010, ora 12

5. Folia trei va conţine o imagine potrivită cu titlul din folia 1, imagine ce


cuprinde întreaga folie.

6. În folia patru inseraţi o nomogramă piramidală, aşa cum este prezentată


alăturat

171
Probleme pentru ATESTAT 2013

Altele

Calificare
obţinută în
liceu

Calificare la locul de
muncă

7. În folia cinci inseraţi două butoane de acţiune. Primul face trecerea în folia 2
iar cel de-al doilea către folia şapte. Scrieţi în folia şapte textul „Succes!”.

8. Folia şase conţine textul: „Oferte valabile după data de 01.03.2013”.


Adăugaţi cuvântului „Oferte” un Hyperlink către un document din My
Documents.
9. Inseraţi, în secţiunea de subsolul, automat data şi ora precum şi numărul de
diapozitiv.
10. Adăugaţi întregii prezentări ca design template un şablon ales de Dvs. şi
aplicaţi un efect de tranziţie întregii prezentări.

172

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