Documente Academic
Documente Profesional
Documente Cultură
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ă.
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
7
Probleme pentru ATESTAT 2013
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ţ
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>
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>
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>
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>
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
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).
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.
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.
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
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
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.
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
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
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.
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.
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
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.
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.
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
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.
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.
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;
}
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.
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.
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.
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 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!”.
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;
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.
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;
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.
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 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
);
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)
);
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
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
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
);
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
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
);
69
Probleme pentru ATESTAT 2013
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
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
);
71
Probleme pentru ATESTAT 2013
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
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)
);
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:
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
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
);
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
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
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Ţ
Cerința b:
TITLU AUTOR PREŢ
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)
);
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
COORDONATOR
1910210555777 Darie Mihai 1800 4
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,
);
VALUES(:COD, :DENUMIRE);
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
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
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);
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
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
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
);
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
);
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
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
);
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
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
96
Probleme pentru ATESTAT 2013
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
Cerința c:
NUME PRENUME MARCA AN_FABRIC
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
);
Cerința b:
SELECT NUME, PRENUME, AN_FABRICATIE
98
Probleme pentru ATESTAT 2013
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
);
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)
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
Tabela FIRME
Tabela ZBORURI
Cerința b:
Cerința c:
Rezolvare:
Cerința a:
107
Probleme pentru ATESTAT 2013
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))
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
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
)
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
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)
);
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
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)
);
117
Probleme pentru ATESTAT 2013
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
Tabela ABONAMENTE
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
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')
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
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
Tabela NOTE
Cerinţa b:
121
Probleme pentru ATESTAT 2013
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
);
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
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
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)
);
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
Tabela ELEVI1
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
);
126
Probleme pentru ATESTAT 2013
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
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
Rezolvare
Cerința a:
- crearea tabelei REGIZORI:
CREATE TABLE REGIZORI
(
ID INTEGER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL
);
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
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
);
Cerinţa b:
SELECT B.NUME, B.SALARIU, A.DENUMIRE
131
Probleme pentru ATESTAT 2013
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
3. Realizaţi
Indicatoare rutiere
4. Realizaţi:
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.
Subiectul nr. 2
3. Realizaţi:
Destinaţii turistice în Europa
4. Realizaţi:
134
Probleme pentru ATESTAT 2013
(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)
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.
FORMULE TRIGONOMETRICE
4. Realizaţi: A
B C
5. Realizaţi următorul tabel:
sin 𝑢 1 √2 √3
2 2 2
cos 𝑢 √3 √2 1
2 2 2
𝑡𝑔 𝑢 1 1 √3
√3
𝑐𝑡𝑔 𝑢 √3 1 1
√3
136
Probleme pentru ATESTAT 2013
Subiectul nr. 4
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.
137
Probleme pentru ATESTAT 2013
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.
3. Realizaţi:
Adeverinţă
(1p)
Sperantei, nr.
1
Ionescu Vasile XI Grup Scolar nr.3 Alba Iulia Str. Piinilor, Biblioteca
nr. 6
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.
Calculatorul
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)
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
Director
executiv
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.
3. Realizaţi:
Figuri geometrice
142
Probleme pentru ATESTAT 2013
4. Realizaţi:
Romb
Cilindru
Triunghi
echilateral
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
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.
Domnule Director,
Data Semnătura,
Greedy
o Backtracking
☺ Branch and Bound
144
Probleme pentru ATESTAT 2013
6. Realizaţi:
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.
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.
Atestat
Office Programare BD
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
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.
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.
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.
Subiect nr. 13
1.Deschideţi aplicaţia de calcul tabelar. Într-un nou registru, redenumiţi prima
foaie de calcul - Testare.
Nota
Elev
1. elev 1 5
2. elev 2 6
3. elev 3 8
4. elev 4 9
. ….. .
. ….. .
30. elev 30 6
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
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.
Subiect nr. 14
1.Deschideţi aplicaţia de calcul tabelar. Într-un nou registru, redenumiţi prima
foaie de calcul - Medicamente.
Subiect nr. 15
1.Deschideţi aplicaţia de calcul tabelar. Într-un nou registru, redenumiţi prima
foaie de calcul – Grădina_zoologică.
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
152
Probleme pentru ATESTAT 2013
Subiect nr. 16
1. Cu ajutorul aplicației Microsoft Excel realizați un tabel cu structura de mai
jos:
153
Probleme pentru ATESTAT 2013
Subiectul nr.17
1.Creaţi un fişier atestat.xls. Introduceţi tabelul de mai jos în foaia de calcul
Excel. (0,5p)
154
Probleme pentru ATESTAT 2013
Subiectul nr. 18
155
Probleme pentru ATESTAT 2013
Subiectul nr. 19
156
Probleme pentru ATESTAT 2013
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
Subiectul nr. 20
157
Probleme pentru ATESTAT 2013
Subiect nr. 21
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.
Subiect nr. 22
159
Probleme pentru ATESTAT 2013
CLASA
ELEV1 ELEV2 ELEV3
Adăugați doi elevi în organigramă
8. În folia 4 schimbaţi în galben culoarea de umplere a fundalului
10. Aplicaţi un efect de tranziţie între foliile prezentării (se acceptă setarea
automată).
160
Probleme pentru ATESTAT 2013
Subiect nr. 23
Subiect nr. 24
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.
Subiect nr. 25
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.
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
Subiect nr. 26
manager
director director de
financiar marketing
manager de
contabil casier
marketing
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:
Subiect nr. 27
166
Probleme pentru ATESTAT 2013
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
167
Probleme pentru ATESTAT 2013
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.
Subiectul nr. 28
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:
8. Folia cinci va conţine o diagramă de tip linie, pe baza datelor din folia trei.
169
Probleme pentru ATESTAT 2013
Subiect nr. 29
170
Probleme pentru ATESTAT 2013
8 9
respectiv
Subiectul nr. 30
1. Porniţi aplicaţia pentru prezentări şi deschideţi o nouă prezentare.
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!”.
172