Escolar Documentos
Profissional Documentos
Cultura Documentos
1357931
REZOLVARE:
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("numar.in");
ofstream g("numar.out");
int invers;
int cifra(int nfp)
{
while(nfp!=0)
{
invers=invers*10+nfp%10;
nfp=nfp/10;
}
}
int verificare(int nfp)
{
if(nfp==invers)
g<<endl<<"palindrom";
else
{
g<<endl<<"nu este palindrom";
}
}
int main()
{
int n,pc,nfp=0,s, a[100];
f>>n;
for(int i=1; i<=n; i++)
f>>a[i];
for(int i=1; i<=n; i++)
{
s=a[i];
while(s>0)
{
pc=s%10;
s=s/10;
}
nfp=nfp*10+pc;
}
g<<nfp;
cifra(nfp);
verificare(nfp);
}
#include <iostream>
#include <math.h>
Din fisierul text atestat.in se citesc trei numere naturale x, y, k; (1<x<y<2000000, k<1000).
din intervalul [x,y], pe primul rand al fisierului text atestat.out, separate prin cate un spatiu. Daca nu exista k numere prime
in intervalul [x,y] se vor afisa toate numerele prime gasite, iar pe al doilea rand ai fisierului atestat.out se va afisa mesajul
s-au gasit mai putine numere prime: urmat de numarul acestora
Exemplu: Daca fisierul atestat.in are forma:
3 12 5
atunci fisierul atestat.out va contine:
3 5 7 11
s-au gasit mai putine numere prime: 4
Rezolvare:
#include<fstream>
using namespace std;
int main()
{
int k, d, i, prim, l=0;
long x,y;
ifstream f("atestat.in");
ofstream g("atestat.out");
f>>x>>y>>k;
for(i=x;i<=y;i++)
{
prim=0;
for(d=2;d<=i/2;d++)
{
if(i%d==0)
prim=1;
}
if(prim==0)
{
g<<i<<" ";
l++;
}
}
if(l!=k)
g<<endl<<"s-au gasit mai putine numere prime: "<<l;
}
5.(Solcan Sorin si Danilov Dumitru)
Dou numere naturale cu proprietatea c suma divizorilor fiecrui numr (neconsidernd n acest caz numrul nsui ca
divizor) este egal cu cellalt numr plus 1, se numesc numere quasi-amiabile sau numere logodite.
Pe fiecare linie a fiierului text numere.txt se gsesc cte 2 numere naturale. tiind c 2
numere situate pe o linie a fiierului formeaz o pereche, s se afieze la ecran toate
perechile de numere quasi-amiabile din fiier.
Exemplu: Dac fiierul numere.txt conine:
25 18
48 75
195 140
260 310
atunci la ecran se vor afia perechile:
48 75
195 140
#include<iostream>
#include<fstream>
using namespace std;
int s=0;
int verificare(int a)
{
for(int i=1; i<a; i++)
{
if(a%i==0)
s=s+i;
}
}
int main()
{
int a=1, b, p=0;
ifstream f("numere.txt");
while(a!=p)
{
p=a;
f>>a>>b;
s=0;
verificare(a);
if(s==b+1)
cout<<a<<" "<<b<<endl;
}
}
Rezolvare :
#include<iostream>
#include<fstream>
using namespace std;
ofstream g(numere.out);
int prim (int n)
{
int ok=1;
for(int i=2;i<n;i++)
if (n%i==0)
ok=0;
return ok;
}
int verific(int n)
{
int ok=0;
for(int p=2;p<n;p++)
if(prim(p))
if(n%p==0)
if(n%(p*p)==0)
ok=1;
else
ok=0;
return ok;
}
int main()
{
int n;
cout<<Dati n:;
cin>>n;
for(int i=4;i<=n;i++)
if(verific(i))
g<<i<< ;
}
(Problema 18)
Se citeste din fisierul text linie.in un tablou bidimensional a cu nxn(n <50) elemente numere naturale de cel mult 9 cifre.
Sa se realizeze un program care afiseaza in fisierul text linie.out:
1. Linia cu cele mai multe elemente prime.
2. Pe a doua linie se vor afisa elementele diagonalei principale ale tabloului.
Elemplu :
linie.in
3
235
462
793
Rezolvare :
#include<iostream.h>
#include<fstream>
using namespace std;+
int prim(int n)
{
int i, ok=1;
for (i=2; i<=n; i++)
if (n%i==0)
ok=0;
return ok;
}
int main()
{
int n, a[50][50], i, j, kv=0, is=0, nr=0;
ifstream f(linie.txt);
ofstream g(out.txt);
f>>n;
for(i=1; i<=n; i++)
for(j=1;j<=n;j++)
{
f>>a[i][j];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
if(prim(a[i][i]))
nr++;
if(kv<nr)
{
kv=nr;
is=i;
}
nr=0;
}
g<<Linia este<<is;
g<<endl;
for(i=1;i<=n;i++)
g<<a[i][i]<< ;
}
7.(Vlaescu Cezar si Atat)
linie.out
1
263
Sa se creeze fisierul gemene.txt care sa contina primele n perechi de numere prime gemene stiind ca n este un numar
natural care se citeste de la tastatura.Se numesc prime gemene 2 numere naturale prime de forma p,p+2.
Exemplu:Daca se citeste numarul 3,fisierul numere.out va contine numerele
35
57
11 13
Rezolvare
#include<fstream>
using namespace std.
unsigned prim(unsigned n);
{
usingned ok,i,d;
ok=1;
for(i=2;i<=n/2 && ok;i++)
if(n%i==0)
return ok;
}
int main()
{
usingned n,nr,p;
ofstream f(gemene.txt);
cin>>n;
nr=0;
p=3;
while(nr<n)
if(prim(p))
if(prim(p+2))
{
f<<p<< <<p+2<<endl;
nr++;
p=p+2;
}
else
p=p+4;
else
p=p+2;
f.close();
}
8?????
9.(Miftode Ana si Lazareanu Sabina Stefana):
ENUNT:
Un numr n se numete rotund dac are un numr egal de cifre de 0 i 1 n reprezentarea sa matematic n baza 2. De
exemplu, numrul 184 este un numr rotund deoarece reprezentat n baza 2 conine 4 cifre de 0 i 4 cifre de 1. Numrul
120 nu este rotund deoarece reprezentat n baza 2 conine 3 cifre de 0 i 4 cifre de 1.
a) Scriei definiia complet a unui subprogram baza, cu trei parametri, care primete prin
intermediul parametrului n un numr natural nenul de cel mult 9 cifre; subprogramul
returneaz prin intermediul celui de-al doilea parametru, x, numrul de cifre de 0 din
reprezentarea n baza2 a numrului n, iar prin intermediul celui de-al treilea parametru, y,
numrul de cifre de 1 din reprezentarea n baza 2 a numrului n.
Exemplu: pentru n=28 subprogramul va returna prin parametrul x valoarea2, iar prin parametrul y
valoarea3.
b) Fiierul text atestat.in conine, pe o singur linie, cel mult 100 de numere naturale nenule, de cel puin dou cifre i cel
mult 9 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei programul C++ care creeaz fiierul text atestat.out
i scrie n el, pe prima linie, separate prin cte un spaiu, toate numerele din fiierul text atestat.in care sunt rotunde. Dac
nu exist niciun numr rotund, atunci n fiierul text atestat.out se va scrie Nu exist!.
REZOLVARE:
a)#include <iostream>
using namespace std;
int rotund(int n,int x,int y)
{
x=0;
y=0;
while(n!=0)
{
if(n%2==0)
{
x++;
n=n/2;
}
else
{
y++;
n=n/2;
}
}
cout<<"In reprezentarea sa in baza 2, numarul are "<<x<<" cifre de 0 si "<<y<<" cifre de 1."<<endl;
if(x==y)
cout<<"Numarul este rotund.";
else
cout<<"Numarul nu este rotund.";
}
int main()
{
int n,x,y;
cout<<"n=";
cin>>n;
rotund(n,x,y);
return 0;
}
b)#include <iostream>
#include<fstream>
using namespace std;
ifstream f("atestat.txt");
ofstream g("atestat.out");
int rotund(int n,int x,int y)
{
int c, ok=0, m;
x=0; y=0;
m=n;
while(m!=0)
{
c=m%2;
if(c==0)
x++;
else
y++;
m=m/2;
}
if(x==y)
{
g<<n<<" ";
ok=1;
}
if(ok==0)
g<<"Nu exista!";
}
int main()
{
int x,y, n;
while(f>>n)
{
rotund(n,x,y);
}
f.close();
g.close();
return 0;
}
#include<iostream>
#include<fstream>
int main()
{
ifstream f("date.in");
ofstream g("date.out");
int a,s[100],i;
while(f>>a)
s[1]=a;
for(i=1;i<=a;i++)
while(s[i]!=0)
{
s[i+1]=s[i]+s[i]%10;
s[i]=s[i]/10;
}
g<<s[i];
f.close();
g.close();
}
b).Fisierul text fractii.in contine, pe prima linie un numar natural n(n<=100), iar pe urmatoarele n linii,n fractii de forma
a/b,unde a si b sunt numaratorul,respectiv numitorul,numere naturale nenule de cel mult patru cifre fiecare,separate prin
cate un spatiu. Scrieti programul c++ care simplifica fractiile din fisierul de intrare si care creeaza fisierul text fractii.out si
scrie in el, pe cate o linie, numaratorul si numitorul fractie obtinute dupa simplificare,separate prin cate un spatiu, precum
si numarul fractiilor ireductibile.
Exemplu:
Daca fisierul fractii.in are forma:
4
26 12
19 4
20 15
17 17
atunci fisierul fractii.out va avea forma:
13 6
19 4
43
11
1
Rezolvare:
a).
int cmmdc(int a,int b)
{
while(a!=b)
{
if(a>b)
{
a=a-b;
}
else
{
b=b-a;
}
}
return a;
}
b).#include<fstream.h>
int cmmdc(int a, int b)
{
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
return a;
}
int main()
{
int n,i,x,y,r,k=0;
ifstream f("fractii.n");
ofstream g("fractii.out");
f>>n;
for(i=1;i<=n;i++)
{
f>>x>>y;
r=cmmdc(x,y);
g<<x/r<<" "<<y/r<<endl;
if(r==1)
k++;
}
g<<k;
f.close();
g.close();
return 0;
}
ma=ma/nr;
g<<endl<<ma;
}
13. Bergheva Evelina si Ulian Ancuta
ENUNT:
Din fiierul text tablou.in se citesc: un numr natural n reprezentnd numrul de componente ale unui vector cu
numere naturale nenule cu cel mult 9 cifre fiecare i cele n componente ale vectorului (n100).
a) Afiai elementele vectorului pe primul rnd al fiierului text tablou.out, ordonate cresctor.
b) Determinai cel mai mare i cel mai mic element din cele n citite care au ultima cifr par. Acestea se vor
afia, separate printr-un spaiu, pe a doua linie a fiierului tablou.out. Dac nu exist niciun element care s aib ultima
cifr par, se va afia n fiier mesajul Nuexist!.
Exemplu: Dac fiierul tablou.in are forma:
6
1431 142 1422 9009 32 72
atunci fiierul tablou.out va conine:
32 72 142 1422 1431 9009 1422 32
REZOLVARE:
#include<fstream>
using namespace std;
ifstream f("atestat.in");
ofstream g("atestat.out");
int main()
{
int x,k,i,d,nr,ok;
long y;
f>>x>>y>>k;
nr=0;
i=x;
while((i>=x)&&(i<=y)&&(nr<k))
{
d=2;
ok=1;
while((d<=i/2)&&(ok==1))
if(i%d==0)
ok=0;
else
d++;
if(ok)
{
g<<i<<" ";
nr++;
}
i++;
}
g<<'\n';
if(nr<k)
g<<"s-au gasit mai putine numere prime:"<<nr;
return 0;
}
{
int i, n, v[100];
in >> n;
for (i = 1; i <= n; i++)
{
in >> v[i];
a[v[i]]++;
out << v[i] << " ";
}
out << endl;
for (i = 1; i <= 10000; i++)
if (a[i] > 0)
out << i << " ";
return 0;
}
20.(Lazareanu Sabina si Miftode Ana)
ENUNT:
Din fiierul vector.in se citesc un numr ntreg n<30 i apoi n numere reprezentnd elementele unui vector. S se
construiasc o matrice cu 3 coloane ale crei linii vor conine toate tripletele de elemente din vector care au proprietatea c
pot reprezenta laturile unui triunghi. Matricea va fi afiat n fiierul matrice.out dup modelul din exemplu.
Exemplu: Dac fiierul de intrare conine urmtoarele date:
7
12 45 10 5 90 4 51
fiierul de ieire va avea urmtoarea form:
12 45 51
12 10 5
12 10 4
45 10 51
45 90 51
REZOLVARE:
#include <iostream>
#include<fstream>
using namespace std;
int v[30],a[3000][3],n,i,j,k,r;Mi
ifstream f("vector.txt");
ofstream g("matrice.out");
int triunghi (int x,int y,int z)
{
if(x+y>z && x+z>y && y+z>x)
return 1;
else
return 0;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n-2;i++)
for(j=i+1;j<=n-1;j++)
for(k=j+1;k<n;k++)
if(triunghi(v[i],v[j],v[k]))
{
r++;
a[r][1]=v[i];
a[r][2]=v[j];
a[r][3]=v[k];
}
for(i=1;i<=r;i++)
{
for(j=1;j<=3;j++)
g<<a[i][j]<<" ";
g<<"\n";
}
return 0;
}
ENUNT: Din fiierul text matrice.in se citete un ntreg n (n<=100). Construii o matrice n*n care s fie simetric fa
de diagonala principal i s conin n poriunea de matrice situat pe i deasupra diagonalei principale numerele de la 1
pn la n*(n+1)/2 n ordine cresctoare. Afiai matricea obinut n fiierul text matrice.out, fiecare linie fiind situat pe
cte o linie a fiierului, iar elementele fiecrei linii sunt separate printr-un spa iu. Exemple: n=3, matricea va fi 1 2 3 n=4,
matricea este: 1 2 3 4 2 4 5 2 5 6 7
356 3689
4 7 9 10
REZOLVARE:
#include<fstream>
using namespace std;
int main()
{
int n, a[30][30], l, i=1, j=1, m;
ifstream f("matrice.in");
ofstream g("matrice.out");
f>>n;
m=n*(n+1)/2;
for(i=j; i<=n; i++)
for(j=i; j<=n; j++)
for(l=1; l<=m; l++)
a[i][j]=l;
for(i=2; i<=n; i++)
for(j=1; j<=i; j++)
for(l=1; l<=m; l++)
a[i][j]=l;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
g<<a[i][j]<<" ";
g<<endl;
}
}
int a[100][100],ok;
unsigned n,i,j;
ifstream f(matrice.in);
f>>n;
for (i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
f.close();
ofstream g(matrice.out);
for(i=1;1<=n;i++)
{
for(j=1;j<=n;j++)
g<<a[i][j]<< ;
g<<endl;
}
ok=1;
for(i=1;i<n;i+)
for(a[i][j]!=a[n+1-j][n+1-i])
ok=0;
if(ok)g<<Da;
elseg<<Nu;
g.close();
return 0;
}
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai alfabetic clienii care ii vor petrece vacana la Viena.
c) S se afieze cea mai scump i cea mai ieftin destinaie.
Tabela DESTINATII:
Id
NUMED
PRE
Viena
110
Paris
230
Budapesta
50
New York
600
Londra
400
Tabela CLIENTI:
IDD
IDC
NUME
PRENUME
ADRESA
TELEFON
11
POP
INA
IAI
0744123567
22
DASCAL
GINA
DEVA
0744123566
33
MIRON
DANA
CLUJ
0744123565
44
MIRON
DAN
CLUJ
0744123564
55
CARP
VLAD
BACU
0744123563
66
POPA
ANA
BACU
0744123562
77
POP
ION
IAI
0744123561
88
AVRAM
ANCA
CLUJ
0744123560
Cerinta b:
NUME
PRENUME
AVRAM
ANCA
POP
INA
POP
ION
Cerinta c:
NUMED
Budapesta
New York
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile
reprezentate n ERD. Populai tabelele cu nregistrri relevante pentru
cerinele urmtoare.
b) S se afieze alfabetic abonaii care au solicitat intervenii n data de 1
ianuarie 2013.
c) Afiai data nregistrrii interveniilor care au termenul limit depit?
Tabela ABONAI
CNP
NUME
PRENUME
2921904555777
Grig
Adela
2890207555777
Alexa
Mara
2910410555777
Darie
Ada
1892411555777
Vlad
Cristi
2902512555777
Pop
Ana
Tabela INTERVENII
IDI
CNP
TIP
DATA INREGISTRRII
TERMEN LIMIT
STARE
1.
2921904555777
deranjament
04-04-2013
nefectuat
2.
2890207555777
Instalare
12-03-2012
efectuat
3.
2910410555777
deranjament
01-12-2012
efectuat
4.
1892411555777
Mutare
05-11-2012
efectuat
5.
2902512555777
Instalare
15-02-2013
efectuat
6.
2890207555777
deranjament
01-01-2013
efectuat
7.
2921904555777
deranjament
01-01-2013
efectuat
8.
2902512555777
deranjament
21-12-2012
nefectuat
Cerina b:
NUME
PRENUME
Alexa
Mara
Grig
Adela
Cerina c:
DATA INREGISTRRII
04-04-2013
21-12-2012
Rezolvare:
a)CREATE TABLE ABONATI
(
CNP NUMBER(13)PRIMARY KEY,
NUME VARCHAR2 (50) NOT NULL,
PRENUME VARCHAR2 (50) NOT NULL
);
INSERT INTO ABONATI VALUES(2921904555777, 'Grig' , 'Adela')
INSERT INTO ABONATI VALUES(2890207555777,'Alexa',Mara')
INSERT INTO ABONATI VALUES(2910410555777,'Darie','Ada')
INSERT INTO ABONATI VALUES(1892411555777 ,'Vlad','Cristi')
INSERT INTO ABONATI VALUES(2902512555777,'Pop','Ana');
Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
S se afieze cel mai vechi film i actorii care au jucat n acesta.
Pentru actorul Florin Piersic s se afieze toate informaiile deinute precum i toate filmele n care
joac.
DESC caini
INSERT INTO caini VALUES (1,2921904555777,'Fay',1)
INSERT INTO caini VALUES (2,2890207555777, 'Dino', 2)
INSERT INTO caini VALUES (3,2910410555777, 'Figaro',1)
INSERT INTO caini VALUES (4,1892411555777, 'Lord',3)
INSERT INTO caini VALUES (5,2902512555777, 'Mozart',3)
INSERT INTO caini VALUES (6,1911708555777, 'Niko',2)
INSERT INTO caini VALUES (7,2921904555777, 'Oscar',0)
INSERT INTO caini VALUES (8,1892411555777, 'Spot',2)
SELECT * FROM caini
ORDER BY id
B)Pentru stpnul Cristinel s se afieze toate informaiile deinute precum i toi cinii cu care a participat la campionat
i premiile obinute de acetia.
SELECT a.cnp, nume, adresa, nume_caine, premiu
FROM stapani a, caini b
WHERE UPPER(nume) LIKE '%CRISTINEL%' AND a.cnp=b.cnp
C)S se afieze lista cinilor alfabetic dup premii, mpreun cu numele stpnilor.
SELECT nume_caine, premiu, nume
FROM stapani a, caini b
WHERE a.cnp=b.cnp
ORDER BY premiu, nume_caine
Problema 6( Ilie Gabriel, Vlaescu Cezar )
La gradina zoologica sunt mai multe animale de specii diferite. Pentru fiecare animal se cunoaste numele si data nasterii
iar pentru fiecare specie denumirea si caracteristica sa.
a. construiti baza de date cu tabelele corespunzatoare si relatiile reprezentate in ERD. Populati tabelele cu
inregistrari relevante pentru urmatoarele cerinte.
b. Care este cel mai batran animal din gradina zoologica si din ce specie face parte ?
c. Sa se afiseze toate animalele alfabetic pe specie.
a. CREATE TABLE SPECII
( ids number(1) PRIMARY KEY,
denumire varchar2(50) NOT NULL,
caracteristici varchar2(50)
);
INSERT INTO Specii
Values (1,ovine,corp acoperit de blan)
INSERT INTO Specii
Values (2,marsupiale,prezena unei pungi, numit marsupiu)
INSERT INTO Specii
Values (3,'cabaline','erbivor, marime considerabila')
CREATE TABLE ANIMALE
( ida number(2) PRIMARY KEY,
(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;
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)
Union/and
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);
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) S se afieze pentru fiecare client reclamele comandate. Clienii vor fi afiai alfabetic.
c) Afiai numele i prenumele clientului care a comandat reclama cu un numr maxim de difuzri.
CREATE TABLE CLIENTI8
(
IDC NUMBER(3) PRIMARY KEY,
NUME VARCHAR2(50) NOT NULL,
PRENUME VARCHAR2(50) NOT NULL,
ADRESA VARCHAR2(150) NOT NULL
);
insert into clienti8 values(1, 'POP', 'INA', 'IASI')
insert into clienti8 values(2,'DASCAL','GINA','DEVA')
insert into clienti8 values(3,'MIRON','DANA','CLUJ')
insert into clienti8 values(4,'MIRON','DAN','CLUJ')
insert into clienti8 values(5,'CARP','VLAD','BACU')
insert into clienti8 values(6,'POPA','ANA','BACU')
CREATE TABLE RECLAME
(
IDR NUMBER(3) PRIMARY KEY,
DENUMIRE VARCHAR2(50) NOT NULL,
DURATA NUMBER(2) NOT NULL,
NR_DE_DIFUZARI NUMBER(2) NOT NULL,
TARIF NUMBER(4) NOT NULL,
IDC NUMBER(3) REFERENCES CLIENTI8(IDC)
);
insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(1,11,'COCA-COLA',2,4,200)
insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(2,22,'LENOR',1,2,150)
c)
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
b) Afiai crile aprute la editura Nemira ordonate alfabetic.
c) Care este valoarea crilor scrise de Ion Creang?
Tabela EDITURI
COD
NUME
ADRESA
TELEFON
NEMIRA
0744123567
NICULESCU
0744123566
ALL
0744123565
ERC PRESS
Florilor 1, Bucureti
0744123564
PETRION
0744123563
Tabela CRI
COD
IDC
TITLU
AUTOR
PRE
11
ION
ION REBREANU
29
22
MARA
IOAN SLAVICI
31
33
POVETI
ION CREANG
19
44
POEZII
MIHAI EMINESCU
15
55
ION CREANG
22
66
POEZII
GEORGE COBUC
19
77
LORELEI
IONEL TEODOREANU
20
88
DUMBRAVA MINUNAT
MIHAIL SADOVEANU
18
Cerina b:
TITLU
AUTOR
PRE
ION
ION REBREANU
29
LORELEI
IONEL TEODOREANU
20
Cerina c:
VALOARE
41
Tabela DEPARTAMENTE
COD
DENUMIRE
CONTABILITATE
APROVIZIONARE
DESFACERE
TRANSPORTURI
PRODUCIE
Tabela ANGAJAI
CNP
NUME I PRENUME
FUNCIA
SALAR
COD_DEPART
2921904555777
Grig Adelina
COORDONATOR DEPARTAMENT
1800
2890207555777
Alexa Mara
ECONOMIST
1500
2910410555777
Darie Ada
COORDONATOR DEPARTAMENT
1800
1892411555777
Vladoi Cristinel
INGINER
1602
2902512555777
Pop Ana
INGINER
1710
1911708555777
Antonescu Paul
ECONOMIST
1403
2901907555777
Ionescu Ana
COORDONATOR DEPARTAMENT
1800
2890909555777
Alex Dana
INGINER
1653
1910210555777
Darie Mihai
COORDONATOR DEPARTAMENT
1800
2882411555777
Vlad Cristina
INGINER
1689
2922512555777
Radu Anda
ECONOMIST
1500
1911709555777
Anton Mihai
COORDONATOR DEPARTAMENT
1800
Cerina b:
DEPARTAMENT
COORDONATOR DEPARTAMENT
CONTABILITATE
Ionescu Ana
APROVIZIONARE
Anton Mihai
DESFACERE
Darie Ada
TRANSPORTURI
Darie Mihai
PRODUCIE
Grig Adelina
Cerina c:
DEPARTAMENT
NUMRUL DE ANGAJAI
CONTABILITATE
APROVIZIONARE
DESFACERE
TRANSPORTURI
PRODUCIE
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) S se afieze lista departamentelor cu efii acestora(se va afia denumirea departamentului i numele coordonatorului).
c) S se afieze numrul de angajai din fiecare departament.
Cerinta a:
CREATE TABLE DEPARTAMENTE
(
COD NUMBER(3) PRIMARY KEY,
DENUMIRE VARCHAR2(30) NOT NULL
);
INSERT INTO DEPARTAMENTE VALUES(1 ,'CONTABILITATE ')
INSERT INTO DEPARTAMENTE VALUES(2 ,'APROVIZIONARE ')
INSERT INTO DEPARTAMENTE VALUES(3 ,'DESFACERE ')
INSERT INTO DEPARTAMENTE VALUES(4,'TRANSPORTURI ')
INSERT INTO DEPARTAMENTE VALUES(5,'PRODUCIE ' );
CREATE TABLE ANGAJATI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2 (50) NOT NULL,
FUNCTIA VARCHAR2 (200) NOT NULL,
SALAR NUMBER (4) NOT NULL,
COD_DEPART NUMBER(3) REFERENCES DEPARTAMENTE(COD)
);
* popularea tabelei CARTI:
INSERT INTO ANGAJATI VALUES(2921904555777 , 'Grig Adelina' ,'COORDONATOR DEPARTAMENT' , 1800 , 5 )
INSERT INTO ANGAJATI VALUES(2890207555777 ,'Alexa Mara', 'ECONOMIST ', 1500, 2)
INSERT INTO ANGAJATI VALUES(2910410555777 , 'Darie Ada', 'COORDONATOR DEPARTAMENT ', 1800, 3)
INSERT INTO ANGAJATI VALUES(1892411555777 , 'Vladoi Cristinel ' , 'INGINER ' , 1602, 5)
INSERT INTO ANGAJATI VALUES(2902512555777, 'Pop Ana', 'INGINER', 1710, 4)
INSERT INTO ANGAJATI VALUES(1911708555777 , 'Antonescu Paul ' , 'ECONOMIST ' , 1403, 1)
INSERT INTO ANGAJATI VALUES(2901907555777, 'Ionescu Ana', 'COORDONATOR DEPARTAMENT ' , 1800, 1 )
INSERT INTO ANGAJATI VALUES(2890909555777 , 'Alex Dana' , 'INGINER ', 1653 , 5)
INSERT INTO ANGAJATI VALUES(1910210555777 , 'Darie Mihai ' , 'COORDONATOR DEPARTAMENT ' , 1800, 4 )
INSERT INTO ANGAJATI VALUES(2882411555777, 'Vlad Cristina', 'INGINER ', 1689 , 5)
INSERT INTO ANGAJATI VALUES(2922512555777 , 'Radu Anda', 'ECONOMIST', 1500, 3 )
INSERT INTO ANGAJATI VALUES(1911709555777, 'Anton Mihai', COORDONATOR DEPARTAMENT , 1800 , 2)
Cerina b:
SELECT DENUMIRE AS DEPARTAMENT, NUME AS COORDONATOR
c) S se afieze media general a fiecreiclase. Se va afia numele dirigintelui i media general a clasei.
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;
Problema 13(Ulian Anca, Nistoroaie Ioana)
O agenie imobiliar ine evidena cldirilor i apartamentelor folosind entitile: CLDIRE i APARTAMENT .
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai apartamentele care se afl n cldiri care au mai mult de 2 nivele.
c) S se afieze la ce adres se gsete apartamentul care are cele mai multe camere.
Tabela CLDIRI
ADRESA
NR_NIVELE
COD_CLDIRE
Florilor 1, Bucureti
Tabela APARTAMENTE
COD_
CLDIRE
COD_APARTAMENT
NR_CAME-RE
ETAJ
OBS
12
11
Reanovat
10
Renovat
Cerina b:
ADRESA
COD_APARTAMENT
NR_CAMERE
ETAJ
Reanovat
Florilor 1, Bucureti
Cerina c:
ADRESA
OBS
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) S se afieze cluburile alfabetic i media de vrst a sportivilor fiecrui club.
c) S se afieze alfabetic cei(cel) mai btrni sportivi mpreun cu cluburile lor.
Tabela CLUBURI
COD_CLUB
DENUMIRE
LOCALITATE
Club Zenit
Club Dinamo
Bucureti
Cluj
Club Steaua
Bacu
Club Rapid
Bucureti
Club Piticot
Suceava
Club Ardealul
Cluj
Tabela SPORTIVI
COD_CLUB
CODS
NUME
PRENUME
VRSTA
11
POP
INA
15
22
DASCAL
GINA
20
33
MIRON
DANA
21
44
MIRON
DAN
19
55
CARP
VLAD
17
66
POPA
ANA
21
77
AVRAM
MONA
17
88
ENACHE
CRISTI
18
Cerina b:
DENUMIRE
MEDIA DE VRST
Club Ardealul
17
Club Dinamo
20.5
Club Piticot
17.5
Club Rapid
19
Club Steaua
21
Club Zenit
15
Cerina c:
NUME
PRENUME
VRST
MIRON
DANA
21
Club Dinamo
POPA
ANA
21
Club Steaua
DENUMIRE_CLUB
serii','Obisnuit') as "Timp
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n
ERD. Populai tabelele cu nregistrri relevante pentru cerinele urmtoare.
b) Afiai juctorii de la o echip citit de la tastatur.
c) Afiai salariul mediu pentru fiecare echip.
CREATE TABLE ECHIPE
(
Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai numrul de zboruri interne i numrul de zboruri internaionale ce se nregistreaz pe aeroportul din Suceava.
c) S se afieze destinaiile distincte ale zborurilor interne i numele firmelor ce dein avioanele respective.
Tabela FIRME
Tabela ZBORURI
Cerinta b:
Cerinta c:
Cerina a:
CREATE TABLE firme(id NUMBER(3) PRIMARY KEY,
nume VARCHAR2(30) NOT NULL)
INSERT INTO firme VALUES(12, 'Tarom')
INSERT INTO firme VALUES(17, 'Altalia')
INSERT INTO firme VALUES(14, 'Luthanasa')
INSERT INTO firme VALUES(15, 'Swiss')
INSERT INTO firme VALUES(16, 'Austian airlines')
CREATE TABLE zboruri(id NUMBER(3) PRIMARY KEY,
data DATE NOT NULL,
ruta VARCHAR2(100) NOT NULL,
ora VARCHAR2(5) NOT NULL,
durata VARCHAR2(5) NOT NULL,
tip VARCHAR2(15) CHECK (tip IN('Intern', 'International')),
id_firma NUMBER(3) REFERENCES firme(id)
INSERT INTO zboruri VALUES(1, 02-Sept-2010, 'Suceava-Madrid',12;30, 2,'International',15 )
INSERT INTO zboruri VALUES(2, 02-Oct-2010, 'Suceava-Bucuresti', 12:35, 1, 'Intern',12)
INSERT INTO zboruri VALUES(6, 13-Jan-2011, 'Suceava-Timisoara', 07:00, 1:30, 'Intern',12)
INSERT INTO zboruri VALUES(8, 06-Mar-2012, 'Suceava-Varsovia', 10:11, 1:45, 'International',15)
INSERT INTO zboruriVALUES (3,19-Oct-2010, 'Suceava-Bratislava', 11:35, 1:39, 'International'17)
INSERT INTO zboruri VALUES(4, 20-Dec-2010, 'Suceava-Bucuresti', 09:35, 1, 'Intern',12)
INSERT INTO zboruri VALUES(5, 11-Jan-2011, 'Suceava-Paris', 21:35,3,'International',14)
INSERT INTO zboruri VALUES(7, 01-Jan-2012, 'Suceava-Cluj', 08:00, 'Intern', 12);
Cerina b:
SELECT count(id) AS "Numar zboruri",tip FROM zboruri
GROUP BY tip;
Cerina 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'
a)Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
);
INSERT INTO TRADUCATORI values(1820225332211,'Ionescu','Vasile','01-JAN-2003',0755111222,
'ionescu.vasile@yahoo.com ')
INSERT INTO TRADUCATORI values(2851211001122, 'popa', 'Aurelia', '01-may-1987', 0755001133, '-' )
INSERT INTO TRADUCATORI values(1870725332211,'Rusu', 'Andrei', '01-MAY-1976', 0755221100,
'rusu.andrei@yahoo.com)
INSERT INTO TRADUCATORI values(2870725332211, 'Rusu','Andreea', '01-MAY-1976', 0755221155,
'rusu.andeea@yahoo.com)
INSERT INTO TRADUCATORI values(1880522116677, 'Scutaru', 'Paul', '01-MAY-1990', 0755223311,
's.paul@hmail.com')
INSERT INTO TRADUCATORI values(2900101778899, 'Amariei', 'Georgiana', '01-DEC-1991', 0755001188, '-')
CREATE TABLE TRADUCERI
(
ID NUMBER PRIMARY KEY,
CNP_TRAD NUMBER REFERENCES TRADUCATORI(CNP)
NR_PAG NUMBER NOT NULL
PRET_PAG NUMBER NOT NULL
LIMBA VARCHAR2(20) NOT NULL,
DATA_EFECT DATE NOT NULL
);
Cerine:
a) Construiti baza de date cu tabele corespunzatoare si relatiile reprezentate n ERD. Popula i tabelele cu nregistrari
relevante pentru cerinele urmtoare.
b) Afiai lista persoanelor abonate la publicaiile din domeniul IT, ordonat alfabetic dupa nume.
c) Afiai lista publicaiilor la care se pot face abonamente, ntr-un tabel care va avea urmatoarea form:
CREATE TABLE PUBLICATII
(
ID NUMBER PRIMARY KEY,
TITLU VARCHAR2(20) NOT NULL,
PRET NUMBER NOT NULL,
DOMENIU VARCHAR2(30) NOT NULL
);
INSERT INTO publicatii values(101,'PC Magazin',7,'IT')
INSERT INTO publicatii values(104,'Chip',8,'IT')
INSERT INTO publicatii values(102,'Agora',7,'IT')
INSERT INTO publicatii values(103,'One',11,'Monden')
INSERT INTO publicatii values(105,'Bravo',6,'Magazin')
SELECT * FROM PUBLICATII
ORDER BY id
c)SELECT titlu as "Titlul publicatie", domeniu as "Domeniul tratat", pret as "Pretul", pret*1.19 as "Pretul cu TVA"
FROM PUBLICATII
Problema 26 (Lazareanu Sabina, Miftode Ana)
ntr-o instituie colar sunt memorate ntr-un catalog virtual toate notele elevilor. Pentru acest lucru, informaticianul a
creat o baz de date n care a inclus informaii despre elevi (numele, prenumele, CNP-ul acestuia), precum i notele
fiecrui elev. Este important s se cunoasc data la care a fost pus o not, pentru a se putea urmri frecvena notrii.
Diagrama ERD care descrie scenariul de mai sus este:
a. Construii baza de date cu tabele corespunztoare i relaiile reprezentate in ERD i populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
a) CREATE TABLE ELEVI
(
CNP NUMBER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(30) NOT NULL
);
INSERT INTO ELEVI VALUES(1234567891234, 'Popescu', 'Dan')
INSERT INTO ELEVI VALUES(2345678912345, 'Ionescu', 'Adrian')
INSERT INTO ELEVI VALUES(3456789123456, 'Dumitrescu', 'Crina')
INSERT INTO ELEVI VALUES(4567891234567, 'Ionescu', 'Catalin')
INSERT INTO ELEVI VALUES(5678912345678, 'Georgescu', 'Emil');
CREATE TABLE NOTE
(
DATA DATE NOT NULL,
CNP_ELEV NUMBER REFERENCES ELEVI(CNP),
PRIMARY KEY(DATA,CNP_ELEV),
NOTA NUMBER NOT NULL,
MATERIA VARCHAR2(20) NOT NULL,
OBSERVATII VARCHAR2(20)
);
GHILIMELE LA DATA
INSERT INTO NOTE VALUES(05-MAR-2010, 1234567891234, 9, 'informatica', '-')
INSERT INTO NOTE VALUES(15-OCT-2009, 5678912345678, 9,
'matematica', '-')
INSERT INTO NOTE VALUES(10-MAR-2010, 3456789123456, 7, 'fizica', '-')
Problema 28 (
O baza de date conine informaii despre elevii unei coli i dirigin ii acestora. Fiecare diriginte ndrum unul sau mai
muli elevi, fiecare elev este ndrumat de un singur diriginte. Diagrama ERD ce modeleaz situa ia este dat n figura:
Cerine:
a)
Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD i populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b)
Afiai specializrile profesorilor care sunt dirigini. Dac exist 2 profesori cu aceeai specializare, aceasta va fi
afiat o singur dat.
c)
Afiai n ordine alfabetic elevii care au ca dirigini profesori a cror specializare o citii de la tastatur.
CREATE TABLE diriginti28
(
id NUMBER(3) PRIMARY KEY,
nume VARCHAR2(40) NOT NULL,
prenume VARCHAR2(40) NOT NULL,
specializare VARCHAR2(20) NOT NULL
)
INSERT INTO diriginti28 VALUES(11, 'Alexa', 'Adriana', 'matematica')
INSERT INTO diriginti28 VALUES(12, 'Melinte', 'Daniel', 'chimie')
INSERT INTO diriginti28 VALUES(13, 'Donciu', 'Elena', 'fizica')
INSERT INTO diriginti28 VALUES(14, 'Zlotari', 'Vlad', 'fizica')
INSERT INTO diriginti28 VALUES(15, 'Enache', 'Sorin', 'informatica')
INSERT INTO diriginti28 VALUES(16, 'Ratiu', 'Angela', 'informatica')
SELECT * FROM diriginti28
ORDER BY id
CREATE TABLE elevi28
(
id NUMBER(3) PRIMARY KEY,
id_diriginte NUMBER(3) REFERENCES diriginti28(id) NOT NULL,
nume VARCHAR2(40) NOT NULL,
prenume VARCHAR2(40) NOT NULL,
clasa VARCHAR2(10) NOT NULL
)
INSERT INTO elevi28 VALUES(100, 12, 'Radulescu', 'Vasile', '9B')
INSERT INTO elevi28 VALUES(101, 15, 'Luculescu', 'Didina', '11C')
INSERT INTO elevi28 VALUES(102, 14, 'Manolescu', 'Paula', '9C')
INSERT INTO elevi28 VALUES(103, 13, 'Oprescu', 'Bogdan', '9C')
INSERT INTO elevi28 VALUES(104, 16, 'Filipescu', 'Lorin', '10C')
SELECT * FROM elevi28
ORDER BY id
SELECT DISTINCT b.specializare
FROM elevi28 a, diriginti28 b
WHERE a.id_diriginte=b.id
SELECT a.nume, A.PRENUME, B.NUME AS "DIRIGINTE", B.SPECIALIZARE
FROM ELEVI28 A, DIRIGINTI28 B
WHERE A.ID_DIRIGINTE=B.ID AND SPECIALIZARE=:DISCIPLINA
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Popula i tabelele cu nregistrari
relevante pentru cerinele urmtoare.
b) Afiai toi profesorii, mpreun cu salariul, care fac parte din aria curricular Stiinte i care nu primesc premiu.
c) Afiai salariului minim i maxim pentru fiecare arie curricular.
Tabela ARII
COD_ARIE
DENUMIRE
11
Stiinte
12
Tehnologii
13
Om si societate
14
Consiliere
15
Limba si comunicare
Tabela PROFESORI
ID
COD_ARIE
NUME
DATA_NAST
SALARIU
PREMIU
12
Pop Ana
15-04-1971
1124
da
11
Alexa Dan
29-12-1952
2139
nu
11
Mihoc Vlad
01-02-1949
2314
nu
11
Damian Alex
11-08-1954
2247
da
15
Rusu Alin
19-03-1952
2432
nu
11
Ursu Didina
14-11-1965
1453
nu
Cerina b:
NUME
SALARIU
DENUMIRE
Alexa Dan
2139
Stiinte
Mihoc Vlad
2314
Stiinte
Ursu Didina
1453
Stiinte
Cerina c:
COD_ARIE
MAX(SALARIU)
MIN(SALARIU)
11
2314
1453
12
1124
1124
15
2432
2432