Sunteți pe pagina 1din 34

Probleme atestat

1. Se consider tabela elevi avnd structura:


id (de tip numeric, cmp de identificare unic)
nume (de tip text sau ir de caractere)
cnp (de tip text sau ir de caractere)
clasa (de tip text sau ir de caractere)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
a. S se determine numrul persoanelor de sex feminin (primul caracter al cnp-ului este 2)
b. S se afieze lista tuturor claselor i elevii clasei IXA

Rezolvare:

CREATE TABLE elevi.dbf(idd N(3), nume C(20), CNP C(13), clasa C(5))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati nume" to b
accept"dati cnp" to c
accept"dati clasa" to d
replace idd WITH a,nume WITH b,CNP WITH c,clasa WITH d
ENDFOR

USE elevi.dbf
k=0
FOR i=1 TO RECCOUNT()
IF SUBSTR(CNP,1,1)='2'
k=k+1
ENDIF
SKIP 1
endfor
?k

USE elevi.dbf
GO top
LIST nume for clasa='IX-A'
USE elevi.dbf
INDEX on clasa TAG cla ASCENDING
TOTAL ON clasa TO clase.dbf FIELDS idd
USE clase.dbf
GO top
LIST clasa
2. S se creeze tabela angajati cu structura
id (de tip numeric, cmp de identificare unic)
cnp (de tip text sau ir de caractere)
numele (de tip text sau ir de caractere)
an_angajare (de tip dat calendaristic)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
b. S se afieze toate persoanele angajate nainte de 1 ianuarie 2009;
c. S se afieze toate persoanele a cror zi de natere se srbtorete astzi (ziua de natere se va
extrage din codul numeric personal).

Rezolvare:

CREATE TABLE agj.dbf(idd N(3), cnp C(13), nume C(20),an_anj D)


input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati cnp" to b
accept"dati numele " to c
accept "dati anul angajarii " to d
replace idd WITH a,cnp WITH b,nume WITH c,an_anj WITH CTOD(d)
ENDFOR

LIST nume for an_anj<CTOD('01.01.2009')

LIST nume for SUBSTR(cnp,6,2)=DTOC(DAY(DATE()))


3. Se consider tabela filme cu structura:
id (de tip numeric, cmp de identificare unic)
film (memoreaz un nume de film)
tip (tipul filmului, de exemplu: sf, comedie, horror, istoric etc.)
actor (memoreaz numele actorului principal)
incasari (suma total a ncasrilor filmului)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
b. S se afieze numele filmului cu cele mai mari ncasri
c. S se afieze numele actorului care a jucat n cele mai multe filme
d. S se tearg din tabel toate filmele de tip horror

Rezolvare:

CREATE TABLE filme.dbf(idd N(3), film C(20), tip C(10), actor C(20),incasari N(10))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati film" to b
accept"dati tip" to c
accept"dati actor" to d
input"dati incasari" to e
replace idd WITH a,film WITH b,tip WITH c,actor WITH d,incasari WITH e
ENDFOR

SORT ON incasari TO incasari.dbf DESCENDING


USE incasari.dbf
GO top
DISPLAY film

USE filme.dbf
COPY TO filme1.dbf
USE filme1.dbf
replace ALL idd WITH 1
INDEX on actor tag actor ascending
TOTAL ON actor TO actori.dbf FIELDS idd
USE actori.dbf
SORT ON idd TO filme2.dbf DESCENDING
USE filme2.dbf
GO TOP
DISPLAY actor
USE filme.dbf
DELETE FOR tip='horror'
PACK

5. Tabela telefoane are structura:


id (de tip numeric, cmp de identificare unic)
marca (marca telefonului, ex: Nokia, Motorola etc.)
pret

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
b. S se afieze telefonul cel mai scump. Dac sunt mai multe cu pre maxim, se vor afia toate
c. S se afieze marca cea mai prezent n tabel, mpreun cu preul mediu al telefoanelor
respectivei mrci

Rezolvare:

CREATE TABLE telefoane.dbf(idd N(3), marca C(20), pretul N(10))


input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati marca" to b
input"dati pretul" to c
replace idd WITH a,marca WITH b,pretul WITH c
ENDFOR

CALCULATE MAX(pretul)to x
LIST marca for pretul=x

USE telefoane.dbf
COPY TO tel.dbf
USE tel.dbf
replace ALL idd with 1
INDEX on marca TAG marca DESCENDING
TOTAL ON marca TO marca.dbf FIELDS idd
USE marca.dbf
SORT TO marca1.dbf ON idd DESCENDING
USE marca1.dbf
GO TOP
x=marca
DISPLAY x

USE telefoane.dbf
CALCULATE AVG(pretul) TO y FOR marca=x

6. Se consider tabela elevi cu structura:


id (de tip numeric, cmp de identificare unic)
nume
prenume
init_tata
cnp
clasa

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
b. S se creeze o aplicaie care s permit cutarea unui elev dup nume. n caz c exist mai muli
elevi cu acelai nume, se vor afia toi ntr-o list, iar aplicaia trebuie s permit afiarea
informaiilor unui elev care a fost selectat.

Rezolvare:

CREATE TABLE elv.dbf(idd N(3), nume C(20), prenume C(20), int_tata C(2),CNP c(13),clasa C(5))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati nume" to b
accept"dati prenume" to c
accept"dati initiala tata" to d
accept"dati cnp" to e
accept"dati clasa "to f
replace idd WITH a,nume WITH b,prenume WITH c,int_tata WITH d,CNP WITH e,clasa WITH f
ENDFOR
USE elv.dbf
accept"cititi numele elevului" to x
COPY TO numele.dbf FOR nume=x
USE numele.dbf
accept"cititi prenumele elevului" to y
GO top
DISPLAY for prenume=y

7. Tabela electronice are structura:


id (de tip numeric, cmp de identificare unic)
tip (de exemplu: televizor, dvd player, boxe etc.)
marca (exemplu: Samsung, Sony etc.)
pret

Cerine:
a. S se populeze cu date tabela (minimum 10 nregistrri)
b. S se scrie o aplicaie care s permit citirea de la tastatur a dou preuri a i b (cu a < b, valori
ntregi) i afiarea tuturor electronicelor avnd preuri ntre a i b. Aplicaia trebuie s premit i
alegerea (opional) afirii unui anumit tip de produs sau produselor unei mrci anume care au
preuri n intervalul a..b.

Rezolvare:

CREATE TABLE electronice.dbf(idd N(3), tip C(20),marca C(20), pretul N(10))


input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati tipul"to b
accept"dati marca" to c
input"dati pretul" to d
replace idd WITH a,tip WITH b,marca WITH c,pretul WITH d
ENDFOR

input"cititi valoarea minima" to g


input"cititi valoarea maxima" to t
LIST FOR pretul>g AND pretul<t
accept "ce doriti sa afisati,marca sau tip de produs" to x
if x='marca'
accept "cititi marca" to z
list for marca=z and pretul>g and pretul<t
else
USE electronice.dbf
accept "cititi tipul produsului" to v
list for tip=v and pretul>g and pretul<t
endif

8. Se consider tabela albume cu structura:


id (de tip numeric, cmp de identificare unic)
titlu
autor
an_aparitie

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
b. S se afieze, ordonate descresctor dup anul aparitiei, toate albumele unui anumit autor
c. S se afieze anul n care au aprut cele mai multe albume, precum i acele albume care au
aprut n anul respectiv

Rezolvare:

CREATE TABLE albume.dbf(idd N(3), titlu C(20), autor C(20), an_ap N(4))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati titlu" to b
accept"dati autor" to c
input"dati anul aparitiei" to d
replace idd WITH a,titlu WITH b,autor WITH c,an_ap WITH d
ENDFOR

SORT ON an_ap /D TO albume1.dbf


USE albume1.dbf
accept"dati numele artistului" to x
GO top
list for autor=x

USE albume.dbf
COPY TO albume2.dbf
USE albume2.dbf
replace ALL idd WITH 1
INDEX on an_ap TAG an DESCENDING
TOTAL ON an_ap TO alb.dbf FIELDS idd
USE alb.dbf
SORT TO album3.dbf ON idd DESCENDING
USE album3.dbf
GO TOP
DISPLAY an_ap

9. Se consider tabela angajati cu structura:


id (de tip numeric, cmp de identificare unic)
nume (text sau ir de caractere)
salariu ( numr ntreg cu maximum 7 cifre)
datan (dat calendaristic)
sectia (text sau ir de caractere)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri).
b. Afiai toi angajaii de la secia Administraie.
c. Mrii salariul tuturor angajailor cu 100 RON.

Rezolvare:

CREATE TABLE angajati.dbf(idd N(3), nume C(20), sal N(10), datan D, sectia C(20))
input"dati nr de inregistrari" to n
GO top
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati nume" to b
input"dati salariu" to c
accept"dati data" to d
accept"dati sectia" to e
replace idd WITH a,nume WITH b,sal WITH c,datan WITH CTOD(d),sectia WITH e
SKIP 1
ENDFOR
BROWSE

LIST nume for sectia="Administratie"

replace ALL sal WITH 100+sal


DISPLAY

10. Se consider tabela telefoane cu structura:


id (de tip numeric, cmp de identificare unic)
nume (text sau ir de caractere)
prenume (text sau ir de caractere)
tel (text sau ir de caractere)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri).
b. Afiai numerele de telefon ale persoanelor cu prenumele George.
c. tergei din tabel toate persoanele al cror nume ncepe cu litera C.
Rezolvare:

CREATE TABLE telefoane1.dbf(idd N(3), nume C(20), prenume C(20),tel C(20))


input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati nume" to b
accept"dati prenume" to c
accept"dati telefon" to d
replace idd WITH a,nume WITH b,prenume WITH c,tel WITH d
ENDFOR

LIST tel for prenume='George'

DELETE FOR SUBSTR(nume,1,1)='C'


Pack

11. Se consider tabela medicamente cu structura:


id (de tip numeric, cmp de identificare unic)
codm (numr ntreg cu maximum 2 cifre - reprezint codul medicamentului)
denumire (text sau ir de caractere)
cantitate (numr ntreg cu maximum 5 cifre)
pu (numr ntreg cu maximum 7 cifre reprezint preul unitar al medicamentului)
codf (numr ntreg cu maximum 2 cifre reprezint codul farmaciei care ofer medicamentul
respectiv)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
b. Dublai preul pentru PARACETAMOL de la toate farmaciile
c. tergei din toate farmaciile medicamentul ASPIRINA

Rezolvare:

create table medicamente.dbf (id N(2), codm N(2), denumire C(20), cantitate N(5),
pu N(7), codf N(2))
input to n
for i=1 to n
append blank
input to i
input to c
accept to d
input to can
input to p
input to cod
replace id with I, codm with c, denumire with d, cantitate with can, pu with p,
codf with cod
endfor

replace all pu with 2*pu for denumire = paracetamol

delete for denumire=aspirina


pack
12. Se consider tabela bolnav cu urmtoarea structura:
id (de tip numeric, cmp de identificare unic)
nf (numr ntreg cu maximum 3 cifre reprezint numr fi)
nume (text sau ir de caractere)
data_n (data calendaristic)
gs (text sau ir de caractere reprezint grupa sanguin)
diagnostic (text sau ir cu maximum 30 de caractere)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
b. S se determine cea mai frecvent grup sanguin
c. Ce vrst are bolnavul cu numarul de fisa 123 ce sufer de DIABET

Rezolvare:

CREATE TABLE bolnav.dbf(idd N(3), nf N(3), nume C(20),datan D,gs c(3),dgn C(20))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
input"dati numarul fisei" to b
accept"dati numele pacientului" to c
accept "dati data " to d
accept"dati grupa sanguina " to e
accept"dati diagnosticul" to f
replace idd WITH a,nf WITH b,nume WITH c,datan WITH CTOD(d),gs WITH e,dgn WITH f
ENDFOR

USE bolnav.dbf
COPY TO bolnav1.dbf
USE bolnav1.dbf
replace ALL idd WITH 1
INDEX on gs TAG grupasang DESCENDING
TOTAL ON gs TO grs.dbf FIELDS idd
USE grs.dbf
SORT TO blv.dbf ON idd DESCENDING
USE blv.dbf
GO TOP
DISPLAY gs

USE bolnav.dbf
LIST year(date())-year(datan) for nf=123 AND dgn='Diabet'
14. Se consider tabela pacient cu urmtoarea structura:
id (de tip numeric, cmp de identificare unic)
nf (numr ntreg cu maximum 3 cifre - reprezint numr fi )
nume (text sau ir de caractere cu maximum 20 de caractere )
data_n (dat calendaristic)
gs (text sau ir de caractere reprezint grupa sanguin)
diagnostic ( text sau ir de caractere cu maximum 30de caractere)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri).
b. S se determine numrul de bolnavi de ARTRITA care au grupa sanguin AB4.
c. tergeti din tabel toi bolnavii mai mici de 18 ani.

Rezolvare:

CREATE TABLE pacient.dbf(idd N(3), nf N(3), nume C(20),datan D,gs c(3),dgn C(30))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
input"dati numarul fisei" to b
accept"dati numele pacientului" to c
accept "dati data " to d
accept"dati grupa sanguina " to e
accept"dati diagnosticul" to f
replace idd WITH a,nf WITH b,nume WITH c,datan WITH CTOD(d),gs WITH e,dgn WITH f
ENDFOR

USE pacient.dbf
COUNT TO y FOR dgn='Artrita' AND gs='AB'
?y

DELETE FOR year(date())-year(datan)<18


Pack
15. Se consider tabela atestat cu structura:
id (de tip numeric, cmp de identificare unic)
nume (text sau ir de caractere cu maximum 20 de caractere)
nota1 (numr ntreg cu maximum 2 cifre)
nota2 (numr ntreg cu maximum 2 cifre)
media (numr real)

Cerine:
a. S se creeze i s se populeze cu date tabela(minimum 10 nregistrri).
b. S se completeze cmpul media pentru fiecare elev din tabel folosind formula (nota1+nota2)/2 i
s se afieze toi elevii cu media mai mare de 7.00
c. S se tearg din tabel elevii cu media mai mic dect 6.00.

Rezolvare:

CREATE TABLE atestat.dbf(idd N(3), nume C(20), nota1 N(2), nota2 N(2), media N(5))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati nume" to b
input"dati nota1" to c
input"dati nota2" to d
replace idd WITH a,nume WITH b,nota1 WITH c,nota2 WITH d
ENDFOR

replace ALL media WITH (nota1+nota2)/2


LIST nume for media>7.00

DELETE FOR media<6.00


pack
16. Se consider tabela imobiliare cu structura:
id (de tip numeric, cmp de identificare unic)
cod (numr ntreg cu maximum 2 cifre)
nrcam (numr ntreg cu o cifr)
etaj (numr ntreg cu maximum 2 cifre)
balcon (caracter y dac are balcon respectiv n n caz contrar)
strada (text sau ir de caractere)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri).
b. S se tearg toate apartamentele care nu au balcon
c. Mrii cu 1 numrul de camere ale tuturor apartamentelor aflate pe o strad a crei nume ncepe
cu litera D.

Rezolvare:

CREATE TABLE imobiliare.dbf(id n(3),cod n(1),nrcam n(2),etaj n(2),balcon c(1),strada c(20))


INPUT "Numarul de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
INPUT "ID=" to a
INPUT "COD=" to b
INPUT "NRCAM=" to c
INPUT "ETAJ=" to d
ACCEPT "BALCON" to e
ACCEPT "STRADA=" to f
REPLACE id WITH a, cod with b, nrcam WITH c, etaj WITH d,balcon WITH e,strada WITH f
ENDFOR
WAIT
CLEAR

DELETE ALL FOR balcon='n'


*pack

replace nrcam WITH nrcam+1 FOR LEFT(ALLTRIM(strada),1)='D'

17. Se consider tabela pariuri cu structura:


id (de tip numeric, cmp de identificare unic)
cal (text sau ir de caractere reprezint calul pe care se pariaz)
pers (text sau ir de caractere reprezint persoana care face pariul)
suma (numr ntreg cu maximum 9 cifre reprezint suma pariat)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri).
b. S se tearg din tabel toate pariurile fcute pentru calul Speranta deoarece acesta s-a retras
din curs.
c. Afiai numele celui care are pariul cel mai mare.

Rezolvare:

CREATE TABLE pariuri.dbf(idd N(3), cal C(20), pers C(10), suma N(10))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati cal" to b
accept"dati persoana care pariaza" to c
input"dati suma" to d
replace idd WITH a,cal WITH b,pers WITH c,suma WITH d
ENDFOR
SORT to par1.dbf On suma DESCENDING
USE par1.dbf
GO TOP
DISPLAY pers

CALCULATE MAX(suma)to x
LIST pers for suma=x

18. Se consider tabela taxe (referitoare la taxele de ntreinere) cu structura:


id (de tip numeric, cmp de identificare unic)
nume ir cu maximum 20 de caractere,
nr_pers numr cu maximum 2 cifre
supraf numr cu maximum 3 cifre,
data dat calendaristic (data limit pana la care se pot plti taxele),
suma numr ntreg cu maximum 9 cifre,
achitat numr cu exact o cifr (0 nu a fost achitat, 1 s-a achitat)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri).
b. S se penalizeze cu 10% din sum toate persoanele ce nu au pltit nc.
c. S se afieze doar persoanele care au achitat taxele.

Rezolvare:

CREATE TABLE taxe.dbf(id n(3),nume n(20),nr_pers n(2),supraf n(3),data d,suma n(9),achitat n(1))
INPUT "Numarul de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
INPUT "ID=" to a
ACCEPT "NUME=" to b
INPUT "NUMARUL=" to c
INPUT "SUPRAFATA=" to d
ACCEPT "DATA=" to e
INPUT "SUMA=" to f
INPUT "ACHITAT" to g
REPLACE id WITH a, nume with b, nr_pers WITH c, supraf WITH d,data WITH CTOD(e),suma
WITH f,achitat WITH g
ENDFOR
WAIT
CLEAR

replace suma WITH suma*0,9


Mihay Salavastru:
replace suma WITH suma*0,9 FOR achitat=0

LIST nume for achitat=1

19. Se consider tabela orar cu structura:


id (de tip numeric, cmp de identificare unic)
clasa( text sau sir de caractere
zi numr cu exact 1 cifr (1..5)
ora numr cu maximum 2 cifre,
disciplina text sau sir de caractere

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri).
b. tergei toate nregistrrile referitoare la o clas citit de la tastatur,
c. Actualizai tabelul astfel nct clas 12A s aib miercuri informatic n loc de fizic.
Rezolvare:

CREATE TABLE orar.dbf(idd N(3), clasa C(10), zi N(1), ora N(2), dsc C(10))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati clasa" to b
input"dati ziua" to c
input"dati ora" to d
accept"dati disciplina" to e
replace idd WITH a,clasa WITH b,zi WITH c,ora WITH d,dsc WITH e
ENDFOR

accept"cititi clasa " to x


DELETE FOR clasa=x
pack

USE orar.dbf
replace dsc WITH 'informatica' FOR clasa ='12A' AND zi=3 AND dsc='fizica'

20. O firm se ocup cu comercializarea materialelor pentru construcii. Materialele sunt stocate n
depozite numerotate de la 1 la n. Pentru gestionarea activitii firmei se consider un tabel stocuri
cu urmtoarea structur:
id (de tip numeric, cmp de identificare unic)
denumire (ir de caractere cu maximum 20 de caractere)
cantitate( numr cu maximum 3 cifre)
pret_unitar (numr cu maximum 6 cifre)
depozit (numr cu maximum 3 cifre)
valoare (numr cu maximum 3 cifre)

Cerine:
a. S se creeze i s se populeze cu date tabela (minimum 10 nregistrri)
b. Calculai valoarea i introducei rezultatul, prin comand, n cmpul valoare (valoare se
determin ca fiind cantitate * pret_unitar)
c. Afisai toate produsele din depozitul 5

Rezolvare:

CREATE TABLE 20.dbf(idd N(20), den C(20),cant N(20),prtu N(20),dep N(10), valo N(20))
INPUT "Numarul de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
INPUT "Id=" to a
ACCEPT "Nume" to b
INPUT "cantitate=" to c
INPUT "Pret/unitate" to d
INPUT "Depozit=" to e
REPLACE idd WITH a, den WITH b, cant WITH c, prtu WITH d, dep WITH e
ENDFOR
LIST
WAIT
CLEAR

REPLACE ALL valo WITH prtu*cant


BROWSE
WAIT

LIST for dep='5'

23. Se consider tabela produse cu structura:


id (identificator unic de tip numeric)
denumire (text sau ir de caractere)
pret (de tip numeric)
dataexp (de tip dat calendaristic, reprezentnd data expirrii produsului)

Cerine:
a. S se creeze si s se populeze cu date tabela (minimum 10 nregistrri).
b. S se afieze produsele care vor expira in urmtoarele 7 zile.
c. Se se afieze produsele cu preul egal cu cel mai scump produs, n ordine alfabetic.

Rezolvare:

CREATE TABLE produse.dbf(idd N(3), den C(20), pretul N(10),dtexp D)


input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati denumirea" to b
input"dati pretul" to c
accept "dati data expirarii" to d
replace idd WITH a,den WITH b,pretul WITH c,dtexp WITH CTOD(d)
ENDFOR

LIST den for dtexp-DATE()<=7

USE produse.dbf
SORT TO prds.dbf ON pretul DESCENDING
USE prds.dbf
x=pretul
GO TOP
IF pretul=x
display den
ENDIF
24. Se consider tabela tari cu structura:
numetara (text sau ir de caractere)
capitala (text sau ir de caractere)
continent (text sau ir de caractere)
nrlocuit (de tip numeric)
suprafata (de tip numeric)

Cerine:
a. S se creeze tabela; S se populeze cu date tabela (minimum 10 nregistrri).
b. Se citete de la tastatur numele unui continent. Calculai populaia total a rilor de pe
continentul citit.
c. S se afieze rile n ordinea descresctoare a densitaii populaiei (densitatea fiind egal cu
suprafaa mprit la numrul de locuitori), la densiti egale n ordine alfabetic.

Rezolvare:

CREATE TABLE 24.dbf(nume C(20),cap C(20),conti C(20),loc N(10), sup N(20))


INPUT "Numarul de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
ACCEPT "Nume=" to a
ACCEPT "Capitala=" to b
ACCEPT "Continent=" to c
INPUT "Locuitori=" to d
INPUT "Suprafata=" to e
REPLACE nume WITH a, cap WITH b, conti WITH c, loc WITH d, sup WITH e
ENDFOR
WAIT
CLEAR

ACCEPT "Introduceti continent " to l


CALCULATE MAX(loc) FOR conti=l TO o
WAIT
CLEAR

Replace ALL sup WITH loc/sup


SORT TO dat2.dbf ON sup/DC, nume/AC
LIST
WAIT
CLEAR
27. Se consider tabela salariati cu structura:
id (identificator unic de tip numeric)
nume (de tip text sau caracter)
prenume (de tip text sau caracter)
nr_ore (de tip numeric, reprezentnd numrul de ore lucrate ntr-o lun)
cost_ora (de tip numeric reprezentnd costul unei ore lucrate)
sal_inc (de tip numeric, reprezentnd salariul de ncadrare)

Cerine:
a.S se creeze si s se populeze cu date tabela(minimum 10 nregistrri) , cmpul sal_inc rmnnd
necompletat.
b.S se completeze n mod automat pentru toi angajaii cmpul sal_inc ca fiind
nr_ore*cost_ora.Afiai tabela rezultat.
c.Se citete de la tastatur un numr.Afiati n ordine alfabetic dup nume i prenume angajaii
care au salariul de ncadrare cel puin egal cu numrul citit.

Rezolvare:

CREATE TABLE 41.dbf(idd N(20), nume C(20),prn C(20),nro N(20),cst N(10), sal N(20))
INPUT "Numarul de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
INPUT "Id=" to a
ACCEPT "Nume" to b
ACCEPT "Prenume=" to c
INPUT "Ore=" to d
INPUT "Pret/ora=" to e
REPLACE idd WITH a, nume WITH b, prn WITH c, nro WITH d, cst WITH
ENDFOR
LIST
WAIT
CLEAR

REPLACE ALL sal WITH nro*cst


LIST
WAIT
CLEAR

Input "Introduceti salar minim" to w


SORT TO data2.dbf FOR sal>=n ON nume/AC, prn/AC
LIST
WAIT
CLEAR

29. Se consider tabela personal cu structura:


id (identificator unic de tip numeric)
nume (text sau ir de caractere)
prenume (text sau ir de caractere)
dep (de tip numeric, reprezentnd pentru fiecare angajat departamentul unde lucreaza acesta)
sal (de tip numeric reprezentnd salariul brut al unui angajat)

Cerine:
a. S se creeze si s se populeze cu date tabela (minimum 10 nregistrri).
b. Se citete de la tastatur un numr. Majorai cu 10% toate salariile egale cu numrul citit, afiai
salariaii cu salariul majorat.
c. Afiai angajatul cu salariul maxim de la fiecare departament

Rezolvare:

CREATE TABLE personal.dbf(idd N(3), nume C(20), prenume C(20),dep N(3),sal N(10))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati numele" to b
accept"dati prenumele " to c
input "dati departamentul " to d
input"dati salariul" to e
replace idd WITH a,nume WITH b,prenume WITH c,dep WITH d,sal WITH e
ENDFOR

input "cititi nr " to x


replace sal WITH sal*1.1 FOR sal=x
liST nume,prenume for sal=x*1.1

use personal.dbf
index on str(dep)+str(sal) tag depart descending
go top
y=dep
?sal
for i=1 to reccount()
if dep=y
skip 1
IF i=RECCOUNT()
?sal
endif
else
y=dep
?sal
endif
ENDFOR

33. Se consider tabela excursii cu structura:


id (numeric, cmp de identificare unic)
obiectiv (text sau ir de caractere)
cost (numeric)
data_planificata (dat calendaristic)

Cerine:
a. S se creeze i s se populeze tabela cu minimul 10 nregistrri
b. S se afieze obiectivul, costul i data efecturii tuturor excursiilor a cror cost este cuprins ntre
150 si 500 RON i sunt programate n luna iunie.
c. S se adauge urmtoarele cmpuri: nr_locuri i pret_rezervare, ambele numerice.
Completai automat cmpurile adugate anterior astfel: cmpul nr_locuri cu valoarea 45, iar
pret_rezervare cu preul rezervrii unui autocar, tiind c valoarea cmpului cost este pentru un
singur loc.

Rezolvare:

*a)

CREATE TABLE excursii.dbf(idd N(3), obiectiv C(10), cost N(5), datap D)

INPUTDati numarul de inregistrari TO n

FOR i=1 TO n

APPEND BLANK

INPUTDati id TO a
ACCEPTDati obiectiv TO b

INPUTDati cost TO c

ACCEPTDati data planificata TO d

REPLACE idd WITH a, obiectiv WITH b, cost WITH c, datap WITH CTOD(d)

ENDFOR

*b)

LIST obiectiv, cost, datap FOR cost>150 AND cost<500 AND MONTH(datap)=6

*c)

MODIFY STRUCTURE

REPLACE ALL nr.loc WITH 45

REPLACE ALL pret.rez WITH nr.loc*cost

34. Fie tabela tari cu urmtoarea structur:


id (numeric, cmp de identificare unic)
denumire (text sau ir de caractere)
suprafata (numeric)
populatie (numeric)
pib (de tip numeric, este produsul intern brut)
capitala (text sau ir de caractere)

Cerine:
a. S se creeze tabela i s se populeze cu minimum 10 nregistrri
b. Afiai denumirea, densitatea populaiei i produsul intern brut pe cap de locuitor pentru rile cu
o populaie mai mare de 200 milioane locuitori i care au produsul intern brut (pib) pe cap de
locuitor mai mare dect al Spaniei.
c. Completai automat capitala pentru Romnia.

Rezolvare:

CREATE TABLE tari.dbf(idd N(3), den C(20), suprf N(20),popul N(20),PIB N(10),cap C(20))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati denumirea tarii" to b
IF b='romania'
replace cap WITH 'bucuresti'
ELSE
accept"dati capitala" to c
eplace cap WITH c
endif
input"dati suprafata " to d
input "dati populatia " to e
input"dati PIB-UL" to f
replace idd WITH a,den WITH b, suprf WITH d,popul WITH e,PIB WITH f
ENDFOR

LOCATE FOR den='spania'


y=PIB/popul
GO top
FOR i=1 TO RECCOUNT()
IF popul>200 AND PIB/popul >y
z=suprf/popul
DISPLAY den
t=PIB/popul
?z
?t
ENDIF
SKIP 1
ENDFOR

35.Fie tabela angajati cu structura:


id (numeric, cmp de identificare unic)
nume (text sau ir de caractere)
prenume (text sau ir de caractere)
data_nast (dat calendaristic)
salariu (numeric)
nr_departament (numeric)

a. S se creeze tabela i s se populeze cu minimum 10 nregistrri


b. Afiai numele i vrsta angajailor care au salariul mai mic dect media salariilor angajailor
c. Majorai salariul angajailor din departamentul numrul 2 cu 10%

Rezolvare:
CREATE TABLE angajati1.dbf(idd N(3), nume C(20), pren C(20), data_nas D, salariu N(10), nr_dep
N(20))
input"dati nr de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
input"dati id " to a
accept"dati nume" to b
accept"dati prenumele" to c
accept"dati data nasterii" to d
input"dati salariu" to e
input"dati nr departament" to f
replace idd WITH a,nume WITH b,pren WITH c,data_nas WITH CTOD(d),salariu WITH e,nr_dep
WITH f
ENDFOR

calculate avg(salariu) to x
gO top
for i=1 to RECCOUNT()
if(salariu<x)
display nume
?year(date())-year(data_nas)
endif
skip 1
ENDFOR

36.Se consider tabela carti cu structura:


id_carte (numeric, cmp de identificare unic)
autor (text sau ir de caractere)
titlu (text sau ir de caractere)
an_aparitie (numeric)
editura (text sau ir de caractere)
pret (numeric)
domeniu (text sau ir de caractere)
a. S se creeze tabela i s se populeze cu minimum 10 nregistrri
b. S se afieze titlul, autorul i preul crilor din domeniul SF, cri aprute n 1990
c. Editura Albatros i-a schimbat denumirea n Pinguin. S se realizeze aceast modificare i s se
afieze toate crile editate de aceasta

Rezolvare:

CREATE TABLE 27.dbf(idd N(20), autor C(20),titlu C(20),an N(20),edi C(10), prt N(20), dom C(20))
INPUT "Numarul de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
INPUT "Id=" to a
ACCEPT "Autor" to b
ACCEPT "Titlu=" to c
INPUT "An=" to d
ACCEPT "Editura=" to e
INPUT "Pret=" to f
ACCEPT "Domeniu=" to g
REPLACE idd WITH a, autor WITH b, titlu WITH c, an WITH d, edi WITH e, prt WITH f, dom
WITH g
ENDFOR
LIST
WAIT
CLEAR

LIST FOR dom='SF',an=1990


WAIT
CLEAR

REPLACE edi WITH "Pinguin" FOR edi="Albatros"


LIST for edi="Pinguin"
WAIT
CLEAR

38. Se consider tabela materiale cu structura:


id (numeric, cmp de identificare unic)
denumire (text sau ir de caractere)
pret_unitar (numeric)
cantitate (numeric)
Cerine:
a. S se creeze tabela i s se populeze cu minimum 10 nregistrri
b. S se afieze toate materialele din stoc pentru care preul unitar este ntre 3000 i 10000
c. tergei toate materialele ce nu mai sunt disponibile (cantitatea este 0)

Rezolvare:

CREATE TABLE mat.dbf (idd n (10), den c(12),pu n(12),cant n (12))


input " inreg " to n
FOR i=1 TO n
APPEND BLANK
input " idd " to a
accept " den " to b
input " pu " to c
input " cant " to d
replace idd WITH a , den WITH b, pu WITH c , cant WITH d
ENDFOR

USE mat.dbf
LIST den for pu> 3000 AND pu < 10000

DELETE FOR cant=0


pack
39. Se consider tabela bac cu structura:
id (numeric, cmp de identificare unic)
nume (text sau ir de caractere)
proba_A (text sau ir de caractere)
proba_C (text sau ir de caractere)
proba_D (text sau ir de caractere)
proba_Ea (numeric)
proba_Ec (numeric)
proba_Ed (numeric)
media (tip real)
Cerine:
a. S se creeze tabela i s se populeze cu minimim 10 nregistrri
b. S se afieze acei candidai care au obinut o nota mai mic de 5 la proba Ea, iar la proba A au
fost declarai Experimentai
c. S se calculeze media pentru toi candidaii. Aceasta se calculeaz ca fiind media aritmetic
dintre proba_Ea, proba_Ec, proba_Ed

Rezolvare:
40. Se consider tabela camere cu structura:
nr_camera (numeric, cmp de identificare unic)
nr_paturi (numeric)
pret_camera (numeric)
etaj (numeric)
TV (numeric sau logic)
Internet (numeric sau logic)

a. S se creeze tabela i s se populeze cu minimum 10 nregistrri


b. S se afieze, n ordinea descresctoare a preului, toate camerele aflate ntre etajele 2 i 6
inclusiv, care au cel putin 2 paturi, dispun de TV i Internet
c. Afiai cea mai scump i cea mai ieftin camer a hotelului care are exact 2 paturi i nu dispune
de TV.

Rezolvare:

CREATE TABLE 41.dbf(nrc N(20), nrp N(20),prc N(20),et N(20),TV N(10), Innt N(20))
INPUT "Numarul de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
INPUT "Nrcam=" to a
ACCEPT "Nrpat=" to b
INPUT "Pret=" to c
INPUT "Et=" to d
INPUT "TV?" to e
INPUT "INT?" to f
REPLACE nrc WITH a, nrp WITH b, prc WITH c, et WITH d, TV WITH e, Innt WITH f
ENDFOR
LIST
WAIT
CLEAR

SORT TO data2.dbf FOR et>2,et<6,nrpat>2,TV=1,Innt=1 ON prc/DC


LIST
WAIT
CLEAR

USE 41.dbf
SORT TO data3.dbf FOR nrpat=2,TV=0 ON prc/DC
GO TOP
DISPLAY
GO BOTTOM
DISPLAY
41. Se consider tabela concurs cu structura:
id (numeric, cmp de identificare unic)
nume (text sau ir de caractere)
punctaj1 (numeric, cel mult 3 cifre)
punctaj2 (numeric, cel mult 3 cifre)
total (numeric, cel mult 3 cifre)
calificativ (text sau ir de caractere)

Cerine:
a. S se creeze tabela i s se completeze (numai primele 4 cmpuri) cu minimum 10 nregistrri
b. S se calculeze pentru fiecare concurent totalul ca fiind suma dintre punctaj1 i punctaj2 i s se
afieze, descresctor dup total, numrul concurenilor care au obinut punctajul total peste 100
c. S se completeze cmpul calificativ astfel: primii 5 clasai n ordinea descresctoare a punctajului
vor primi foarte bine (dar numai dac au peste 50 la total), urmtorii care au peste 50 de puncte vor
primi bine, iar restul satisfacator.

Rezolvare:

CREATE TABLE 41.dbf(idd N(20), nume C(20),p1 N(20),p2 N(20),tot N(10), cal C(20))
INPUT "Numarul de inregistrari" to n
FOR i=1 TO n
APPEND BLANK
INPUT "ID=" to a
ACCEPT "NUME=" to b
INPUT "P1=" to c
INPUT "P2=" to d
REPLACE idd WITH a, nume WITH b, p1 WITH c, p2 WITH d
ENDFOR
WAIT
CLEAR

REPLACE ALL tot WITH p1+p2


SORT TO data2.dbf FOR tot>100 ON tot/DC
BROWSE
WAIT
CLEAR

USE 41.dbf
FOR i=1 TO RECCOUNT()
IF i<6
IF tot>50
replace cal WITH "FB"
ELSE
replace cal WITH "S"
ENDIF
ELSE
IF tot>50
replace cal WITH "B"
ELSE
replace cal WITH "S"
ENDIF
ENDIF
ENDFOR
LIST
WAIT