Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
Subiectul nr.1
Sa se creeze o tabela cu structura Cod_numeric_personal, Numele, Data_angajarii, Data_nasterii si sa se introduca 8 articole cu date care sa corespunda cerintelor urmatoare:
a. Sa se afiseze pe ecran toti angajatii cu o vechime mai mare de 10 ani;
b. Sa se afiseze toate persoanele a caror zi de nastere se sarbatoreste astazi.
Rezolvare.
Observatie Secventa urmatoare construieste tabela prin program. Ea nu mai apare in rezolvarea celorlalte subiecte, dar poate fi adaptata usor in functie de structura tabelei date. Tabela se construieste intr-o baza de date pentru a putea folosi nume de campuri lungi(mai mult de 10 caractere).
Cerinta a.
clear
create databases ate1
create table s1(cod_numeric_personal n(13),numele ;
c(12),data_angajarii d,data_nasterii d)
for i=1 to 8
append blank
@4,4 say[ cod-numeric..] get cod_numeric_personal
@5,4 say[ numele..] get numele
@6,4 say[ data-angajarii..] get data_angajarii
@7,4 say[ data-nasterii..] get data_nasterii
read
endfor
wait [Continuati d/n ?] to continua
do while (continua=[d])
append blank
@4,4 say[ cod-numeric..] get cod_numeric_personal
@5,4 say[ numele..] get numele
@6,4 say[ data-angajarii..] get data_angajarii
@7,4 say[ data-nasterii..] get data_nasterii
read
wait [Continuati d/n ?] to continua
enddo
clear
zi=day(date())
luna=month(date())
an=year(date())-10
limita=ctod(str(luna)+str(zi)+str(an))
clear
i=4
@i,5 say [Lista persoanelor cu o vechime mai mare de 10 ani]
@i+1,5 say replicate('-',75)
scan for data_angajarii<=limita
@i+2, 15 say numele
i=i+1
endscan
read time 5
Cerinta b.
clear
zi=day(date())
luna=month(date())
i=4
@i,5 say [Lista persoanelor a caror zi de nastere se sarbatoreste astazi]
@i+1,5 say replicate('-',95)
scan for day(data_nasterii)=zi and month(data_nasterii)=luna
@i+2, 15 say numele
@i+2 ,35 say data_nasterii
i=i+1
endscan
Subiectul nr.2
Sa se creeze o tabela cu structura Numar_bilet, Oras, Pret, Numar_vagon si sa se introduca 8 articole. Cerinte:
a. Sa se calculeze suma realizata in urma vanzarii tuturor biletelor inregistrate in tabela;
b. Sa se afiseze pe ecran numarul de bilete vandute cu destinatia un anumit oras X, citit de la tastatura.
Rezolvare.
Cerinta a.
suma=0
scan
suma=suma+pret
endscan
clear
@4,4 say[Suma totala este:]+str(suma)
read time 5
Cerinta b.
clear
accept[Introduceti destinatia..] to orase
count for oras=orase to nrorase
@4,4 say[Numarul de bilete vandute:]+str(nrorase)
Subiectul nr.3
Sa se creeze o tabela cu structura Cod_caseta, Nume_film, Actor_principal, Tip. Sa se introduca in tabela minimum 8 articole, cu date care sa corespunda urmatoarelor cerinte:
a. Sa se stearga din tabela toate filmele de tip HORROR;
b. Sa se listeze pe monitor toate filmele in care joaca actorul RICHARD GERE.
Rezolvare.
Cerinta a
scan for tip=[HORROR]
delete
endscan
pack
Cerinta b.
i=4
clea
@i-1,5 say repl('-',103)
@i,5 say [Cod caseta]
@i,20 say [Nume film]
@i,35 say [Actor principal]
@i,55 say [Tipul casetei]
@i+1,5 say replicate('-',103)
scan for actor_principal=[RICHARD GERE]
@i+2,2 say cod_caseta
@i+2,22 say nume_film
@i+2,35 say actor_principal
@i+2,57 say tip
i=i+1
endscan
Subiectul nr.4
Sa se creeze o tabela cu urmatoarea structura Cod_furnizor, Cod_material, Nume_material, Pret, Cantitate. Sa se introduca in tabela minimum 8 articole. Cerinte:
a. Sa se afiseze toate ofertele pentru materialul X - dat de la tastatura, crescator, dupa pretul oferit;
b. Sa se afiseze pretul total al materialelor oferite de furnizorul Y - citit de la tastatura.
Datele introduse in tabela trebuie sa corespunda cerintelor enuntate mai sus
Rezolvare
Observatie: inregistrarile care nu indeplinesc conditiile cerute sunt sterse temporar. Ele se deselecteaza prin instructiunea recall all.
Cerinta a.
clear
use s4
accept[ Numele materialului..] to tip
delete for nume_material<>tip
set deleted on
set order to pret
i=4
clea
@i-1,5 say repl('-',103)
@i,5 say [Cod furnizor]
@i,20 say [Cod material]
@i,35 say [Nume material]
@i,55 say [Pretul]
@i,65 say [Cantitate]
@i+1,5 say replicate('-',103)
scan
@i+2,5 say cod_furnizor
@i+2,23 say cod_material
@i+2,39 say nume_material
@i+2,53 say pret
@i+2,67 say cantitate
i=i+1
endscan
read time 5
recall all
Cerinta b.
clear
input [Introduceti codul furnizorului..] to cod
delete for cod_furnizor<>cod
set deleted on
p=0
scan
p=p+pret*cantitate
endscan
? [Suma calculata=],p
recall all
Subiectul nr.5
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Sa se afiseze numarul atelierelor din tabela;
b. Sa se afiseze numarul de piese produse de fiecare atelier.
clear
select 1
use s5
index on cod_atelier tag ateliere unique
count to nratelier
@2,2 say [Numar ateliere:]+str(nratelier)
read time 5
Cerinta b.
clear
select 2
use s5 again
select 1
scan
atelier=cod_atelier
select 2
nrpiese=0
scan for cod_atelier=atelier
nrpiese=nrpiese+numar_piese_produse
ends
? [Atelierul],atelier,nrpiese
select 1
endscan
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Sa se afiseze codul atelierului din tabela cu cei mai multi muncitori;
b. Sa se afiseze codurile atelierelor in care numarul de piese produse este mai mare decit o valoare data de la tastatura.
Observatie: cerinta b. s-a rezolvat cu instructiunea SQL Select.
Cerinta a.
clear
note index on cod tag atel
set order to atel
maxi=0
k=0
c=cod
scan
if cod=c
k=k+1
else
if maxi<k
maxi=k
Clear
?[ Lista codurilor]
?c
else
if maxi=k
?c
endif
endif
k=1
c=cod
endif
endscan
if maxi=k
?c
endif
Read time 5
clear
( Rezolvare propusa de Bercea Teodor)
Cerinta b.
SELECT S6.cod_atelier, sum(numar_piese_produse) as total;
FROM ate6!s6;
GROUP BY S6.cod_atelier;
INTO TABLE coduri.dbf
input[ Limita de piese..] to numar
i=4
@i-1,5 say replicate('-',44)
@i,5 say [Cod atelier]
@i,19 say [Numar muncitori]
@i+1,5 say replicate('-',44)
scan for total>numar
@i+2,5 say cod_atelie
@i+2,25 say total
i=i+1
endscan
use
Subiectul nr.7
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se
introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Se sterg articolele pentru care productia unui muncitor este mai mica decat o valoare data de la tastatura. Sa se afiseze numele acestora si codurile atelierelor din care faceau parte;
b. Sa se afiseze numarul atelierelor ce au ramas cu cel mult doi muncitori in urma stergerii articolelor de la cerinta a).
Rezolvare.
clear
select 1
use s7
select 2
create table ateliere(cod_atelier n(8))
append from s7
index on cod_atelier tag atelier unique
select 1
i=4
clear
input[numarul minim de piese ] to piese
@i-1,5 say replicate([-],33)
@i,5 say [Nume muncitor]
@i,25 say [Cod atelier]
@i+1,5 say replicate([-],33)
scan for numar_piese_produse<piese
@i+2,8 say nume_muncitor
@i+2,23 say cod_atelier
i=i+1
delete
endscan
pack
read time 5
clear
select 2
contor=0
scan
atelier=cod_atelier
select 1
count for cod_atelier=atelier to numar
if numar<3
contor=contor+1
endif
select 2
endscan
@5,5 say [Numarul atelierelor cu cel mult 2 ;
angajati:]+str(contor)
select 1
Subiectul nr.8
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse, Salariul si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Toti muncitorii ce au produs un numar de piese mai mare cu cel putin 10% decat o valoare citita de la tastatura vor avea salariul majorat cu 10%. Sa se afiseze salariile acestora (dupa marirea salariilor) si codul atelierelor din care faceau parte;
b. Sa se afiseze suma totala necesara maririi salariilor de la cerinta a) si codul atelierului cu cei mai multi muncitori cu salarii marite.
Cerinta a.
clear
declare v[10]
for i=1 to 9
v[i]=0
endfor
clear
input [ Numarul de piese..] to piese
piese=int(piese*110/100)
sume=0
i=4
@i-1,5 say replicate([-],33)
@i,5 say [Salariul]
@i,18 say [Cod atelier]
@i+1,5 say replicate([-],33)
scan for numar_piese_produse>=piese
v[cod_atelier]=v(cod_atelier)+1
sume=sume+int(salariul*110/100)-salariul
replace salariul with int(salariul*110/100)
@i+2, 2 say salariul
@i+2,12 say cod_atelier
i=i+1
endscan
read time 5
Cerinta b.
clear
@5,5 say [Suma suplimentara=]+str(sume)
maxim=0
for i=1 to 9
if v[i]>maxim
maxim=v[i]
atelier=i
endif
endfor
@7,5 say [Codul atelierului . fruntas:]+str( atelier)
Subiectul nr.9
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse, Varsta si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Pentru a putea lucra in strainatate, un muncitor trebuie sa aiba o varsta cel mult egala cu o valoare citita de la tastatura si sa produca un numar de piese cel putin egal cu o valoare data de la tastatura. Sa se afiseze numele celor ce indeplinesc ambele conditii si atelierele in care lucreaza acestia;
b. Sa se afiseze numarul mediu de piese produse de toti cei selectati la prima cerinta.
Rezolvare.
Cerinta a.
clear
input[Varsta limita:] to ani
input[Numar minim de piese:] to piese
i=7
@i-1,5 say replicate([-],27)
@i,5 say [Nume muncitor]
@i,18 say[ Cod atelier]
@i+1,5 say replicate([-],27)
sume=0
numar=0
scan for varsta>=ani and numar_piese_produse>=piese
@i+2,7 say nume_muncitor
@i+2,18 say cod_atelier
i=i+1
numar=numar+1
sume=sume+numar_piese_produse
endscan
Cerinta b.
medie=sume/numar
@i+10,5 say [Numarul mediu de piese:]
@i+10,28 say medie
Subiectul nr.10
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse, Numar_copii_minori si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Sa se afiseze o lista cu muncitorii din fiecare atelier (codul atelierului si apoi toti muncitorii din acel atelier si la fel pentru fiecare atelier);
b. Sa se afiseze numarul tuturor copiilor minori ai tuturor muncitorilor din tabela.
Se deschide tabela in doua zone de lucru si se creaza un index unic intr-una dintre zone, pentru a obtine lista atelierelor. Pentru a obtine suma copiilor se foloseste functia sum.
clear
select 1
use s10 again
select 2
use s10 again
index on cod_atelier tag atelier unique
scan
atelier=cod_atelier
select 1
i=4
@i,5 say[Atelierul ]+str(atelier)
scan for cod_atelier=atelier
@i+4,5 say nume_muncitor
i=i+1
endscan
select 2
read time 4
clear
endscan
Cerinta b.
set talk off
select 1
sum(numar_copii_minori) to copii
@15,5 say[ Numar total de copii]+str(copii)
Subiectul nr.11
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Sa se afiseze numarul mediu de piese produse de un muncitor (numar total piese / numar muncitori);
b. Sa se afiseze numarul mediu de piese produse in fiecare atelier (numar total piese / numar ateliere).
Observatie.
Se obtine lista atelierelor ca la problema precedenta. Pentru calcularea mediei se foloseste functia avg in instructiunea calculate.
Rezolvare.
Cerinta a.
select 1
use s11
clear
calculate avg(numar_piese_produse) to medie
@5,5 say [Media pieselor]
@5,19 say medie
read time 4
clear
select 2
use s11 again
index on cod_atelier tag atelier unique
scan
atelier=cod_atelier
select 1
piese=0
numar=0
scan for cod_atelier=atelier
piese=piese+numar_piese_produse
numar=numar+1
endscan
medie=piese/numar
@5,5 say [Atelierul]+str(atelier)
@7,5 say [Media pe atelier]
@7,24 say medie
select 2
read time 4
clear
endscan
Subiectul nr.12
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se
introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Sa se stearga articolele referitoare la muncitorii ce produc un numar de piese mai mai mic decat un numar dat de la tastatura si sa se depuna intr-o tabela noua (cu structura: Nume_muncitor, Numar_piese), apoi sa se sorteze alfabetic noua tabela dupa campul Nume_muncitor si sa se afiseze sortata;
b. Sa se afiseze tabela initiala, dupa transferul precizat la cerinta a).
Cerinta a.
select 1
use s12 again
clear
input [Limita de piese..] to piese
select 2
create table elimin(nume_muncitor c(13);
,numar_piese_produse n(4))
select 1
scan for numar_piese_produse<piese
n=nume_muncitor
p=numar_piese_produse
delete
select 2
append blank
replace nume_muncitor with n
replace numar_piese_produse with p
select 1
endscan
pack
select 2
use elimin agai
index on nume_muncitor tag nume
i=4
@i-1,5 say replicate([-],45)
@i,5 say [Nume muncitor]
@i,22 say [Numar de piese]
@i+1,5 say replicate([-],45)
scan
@i+2,5 say nume_muncitor
@i+2,22 say numar_piese_produse
i=i+1
endscan
read time 6
Cerinta b.
select 1
clear
@i-1,5 say replicate([-],45)
@i,5 say [Nume muncitor]
@i,22 say [Cod atelier]
@i,34 say [Numar de piese]
@i+1,5 say replicate([-],45)
scan
@i+2,5 say nume_muncitor
@i+2,20 say cod_atelier
@i+2,36 say numar_piese_produse
i=i+1
endscan
Subiectul nr.13
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se
introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Se citeste de la tastatura un cod de atelier existent in tabela. In acel atelier se angajeaza un muncitor nou pentru care se introduc date de la tastatura. Campul Numar_piese se va completa cu valoarea 0. Sa se afiseze apoi numarul minim necesar de piese pe care noul venit trebuie sa le produca astfel incat productia medie a acelui atelier sa nu scada;
b. Se citeste de la tastatura un nume de muncitor si un cod de atelier. Daca muncitorul figureaza in acel atelier din tabela, atunci sa i se schimbe codul atelierului sau cu un alt cod dat (existent in tabela) de la tastatura (se muta de la un atelier la altul). Daca acel muncitor nu figureaza in atelierul dat, atunci se va da un mesaj.
Cerinta a.
clear
input [Introduceti codul atelierului..] to atelier
numar=0
piese=0
scan for cod_atelier=atelier
numar=numar+1
piese=piese+numar_piese_produse
endscan
medie=piese/numar+1
append blank
@4,4 say[ nume-muncitor..] get nume_muncitor
replace cod_atelier with atelier
replace numar_piese_produse with 0
read
@8,5 say [Numarul minim este]+str(medie)
read time 5
Cerinta b.
clear
accept [Introuceti numele..] to num
input [Introuceti codul atelierului..] to c
locate for nume_muncitor=num and cod_atelier=c
if found()
input [Introduceti codul noului atelier..] to codnou
replace cod_atelier with codnou
else
wait window [Muncitorul nu figureaza in atelier !!]
endif
Subiectul nr.14
Sa se creeze o tabela cu structura: Nume_muncitor, Cod_atelier, Numar_piese_produse si sa se introduca 8 articole (un articol-un muncitor, codul unui atelier este un numar de la 1 la 9. Pot fi mai multi muncitori intr-un atelier si toti au nume diferite). Cerinte:
a. Muncitorul/muncitorii cu numar maxim de piese produse se va / se vor transfera la alt loc de munca. Sa se afiseze in ordine alfabetica numele celor transferati;
b. Sa se afiseze numarul mediu de piese produse de catre cei ramasi in vechile ateliere.
Rezolvare.
Cerinta a
select 1
use s14 again
clear
select 2
create table maximi(nume_muncitor c(13))
select 1
calculate max(numar_piese_produse) to maxim
scan for numar_piese_produse=maxim
nume=nume_muncitor
delete
select 2
append blank
replace nume_muncitor with nume
select 1
endscan
select 2
index on nume_muncitor tag nume
clear
i=4
@i,5 say [Muncitori transferati]
scan
@i+2,5 say nume_muncitor
i=i+1
endscan
read time 5
Cerinta b.
clear
select 1
set deleted on
piese=0
numar=0
scan
piese=piese+numar_piese_produse
numar=numar+1
endscan
medie=int(piese/numar)
@5,4 say [Media este]+str(medie)
endif
Subiectul nr.15
Sa se creeze o tabela cu structura: Cod_material, Pret_unitar, Cantitate, Stoc_necesar si sa se introduca 8 articole (un articol-un produs dintr-un depozit; cantitate = existentul in depozit; stoc_necesar = cantitatea minima necesara in depozit; valoarea unui produs = cantitatea * pret_unitar). Cerinte:
a. Sa se afiseze codurile produselor pentru care cantitatea existenta este mai mica decat stocul necesar. Pentru fiecare dintre aceste produse se va afisa ce cantitate trebuie adaugata pentru a se realiza o cantitate egala cu acel stoc_ necesar;
b. Sa se afiseze codurile produselor ce au cantitate mai mare cu cel putin 20% decat stoc_necesar, in ordinea codurilor
Rezolvare.
Cerinta a.
clear
i=4
@i-1,5 say replicate([-],33)
@i,5 say [Cod material]
@i,18 say[Cantitate necesara]
@i+1,5 say replicate([-],33)
scan for cantitate<stoc_necesar
@i+2,5 say cod_material
@i+2,18 say str(stoc_necesar-cantitate)
i=i+1
endscan
read time 11
Cerinta b.
clear
index on cod_material tag cod
i=4
@i,5 say [Codul materialului]
scan
if cantitate>int(stoc_necesar*120/100)
@i+2,8 say cod_material
endif
i=i+1
endscan
Subiectul nr.16
Sa se creeze o tabela cu structura: Cod_material, Pret_unitar, Cantitate, Stoc_necesar si sa se introduca 8 articole (un articol-un produs dintr-un depozit; cantitate = existentul in depozit; stoc_necesar = cantitatea minima necesara in depozit; valoarea unui produs = cantitatea * pret_unitar). Cerinte:
a. Se citesc de la tastatura un cod de material si o cantitate. Daca acel produs este in tabela si daca se poate livra (cantitatea din depozit este cel putin egala cu cea citita), atunci sa se afiseze cantitatea ramasa in depozit dupa livrare. Daca acea cantitate ramasa in depozit este mai mica decat stocul_necesar, se va da un mesaj. Daca nu exista acel produs, sau nu e in cantitatea dorita, se va da un alt mesaj;
b. Se citesc de la tastatura un cod de material ( c ) si o cantitate (k). Daca acel cod corespunde unui produs existent, atunci se va mari pentru el cantitatea existenta in depozit cu valoarea k. Daca nu exista, atunci se va adauga un nou articol cu campurile pret_unitar si stoc_necesar citite de la tastatura.
Cerinta a.
define window geam from 2,2 to 15,33 ;
color r*/gr+ font [arial],14
clear
input [Introduceti codul materialului ] to cod
locate for cod_material=cod
if not found()
wait window [Materialul solicitat nu se vinde in acest magazin !]
else
input [Introduceti cantitatea solicitata ] to cant
if cantitate>=cant
replace cantitate with cantitate-cant
wait window [Cantitatea ramasa:]+str(cantitate)
if cantitate<stoc_necesar
for i=1 to 4
activate window geam
@3,3 say [Stoc insuficient !!]
read time 1/2
deactivate window geam
read time 1/2
endfor
endif
else
wait window [Nu dispunem de intreaga cantitate solicitata !]
endif
endif
read time 1
Cerinta b.
clear
input [Introduceti codul materialului ] to c
input [Introduceti cantitatea ] to k
locate for cod_material=c
if found()
replace cantitate with cantitate+k
else
append blank
clear
@5,5 say [Introduceti pretul..] get pret_unitar
@6,5 say [introduceti stocul necesar..] get stoc_necesar
read
replace cod_material with c
replace cantitate with k
endif
read time 2
clear
select 1
Subiectul nr.17
Sa se creeze o tabela cu structura: Nume_autor, Titlu, Nr_exemplare_imprumutate, Data_imprumut si sa se introduca cel putin 8 articole. Cerinte:
a. Sa se afiseze numele autorului cu cele mai multe titluri;
b. Sa se afiseze numele autorului cu cele mai putine carti solicitate pentru imprumut in luna curenta.
Rezolvare.
Cerinta a.
set talk off
clear
calculate max(nr_exemplare_imprumutate) to maxi
scan for nr_exemplare_imprumutate=maxi
],nume_autor
endscan
read time 5
clear
calculate min(nr_exemplare_imprumutate) to maxi
scan for nr_exemplare_imprumutate=maxi
],nume_autor
endscan
Subiectul nr.18
Sa se creeze o tabela cu structura: Nume_angajat, Salariu, Numar_copii_minori, Numar_zile_concediu_medical si sa se introduca cel putin 8 articole. Un articol reprezinta un angajat din intreprindere. Cerinte:
a. Sa se afiseze numele angajatului cu cele mai multe zile de concediu medical;
b. Sa se afiseze salariul mediu al celor ce au avut concediu medical si care au cel putin un copil minor.
Rezolvare.
Cerinta a.
set talk off
clear
calculate max(numar_zile_concediu_medical) to maxi
clear
i=4
@i-1,5 say replicate([-],44)
@i,5 say [Numele angajatului]
@i+1,5 say replicate([-],44)
scan for numar_zile_concediu_medical=maxi
@i+2,14 say nume_angajat
i=i+1
endscan
read time 3
Cerinta b.
clear
calculate avg(salariu) for numar_zile_concediu_medical>0 and ;
numar_copii_minori>0 to med
@5,5 say [Salariul mediu]
@5,22 say med
Subiectul nr.19
Sa se creeze o tabela cu structura: Nume_medic, Nume_pacient, Diagnostic, Data_consultului, si sa se introduca cel putin 8 articole. Un articol reprezinta un pacient dintr-o policlinica (un consult - un articol). Cerinte:
a. Sa se afiseze numarul pacientilor consultati in luna curenta de catre un medic al carui nume se introduce de la tastatura;
b. Sa se afiseze diagnosticul cel mai frecvent pus in luna curenta.
Rezolvare.
Cerinta a.
use s21 again
clear
set exact on
delete for not(month(data_consultului)=month(date())and ;
year(data_consultului)=year(date()))
accept [Nume medic..] to nume
count for nume_medic=nume to tot
@5,5 say [Numarul de pacienti:]+str(tot)
read time 3
clear
Cerinta b.
alter table s21 add column total n(3)
select 2
use s21 again
index on diagnostic tag diag unique
scan
d=diagnostic
select 1
count for diagnostic=d to sume
select 2
replace total with sume
endscan
calculate max(total) to maxi
i=4
@i-1,5 say replicate([-],44)
@i,5 say [diagnosticul cel mai frecvent]
@i+1,5 say replicate([-],44)
scan for total=maxi
@i+2,14 say diagnostic
i=i+1
endscan
recall all
Subiectul nr.20
Sa se creeze o tabela cu structura: Nume_elev, Clasa, Promovat si sa se introduca cel putin 8 articole. Un articol reprezinta un elev dintr-o clasa a unei scoli. Cerinte:
a. Sa se afiseze clasa cu cel mai mare procent de promovabilitate.
b. Sa se afiseze numele elevilor nepromovati dintr-o clasa data de la tastatura.
Rezolvare.
Cerinta a.
clear
set talk off
alter table s23 add column total n(5,2)
select 2
use s23 again
index on clasa tag clasa unique
scan
cl=clasa
select 1
count for clasa=cl and promovat to sume
count for clasa=cl to numar
select 2
replace total with sume/numar
endscan
calculate max(total) to maxi
i=4
@i-1,5 say replicate([-],44)
@i,5 say [Clasa cu cel mai mare procent]
@i+1,5 say replicate([-],44)
scan for total=maxi
@i+2,15 say clasa
i=i+1
endscan
select 1
read time 3
clear
Cerinta b.
accept [Introduceti clasa:] to cl
i=4
@i-1,5 say replicate([-],46)
@i,5 say [Elevii nepromovati din clasa ]+cl
@i+1,5 say replicate([-],46)
scan for clasa=cl and not promovat
@i+2,15 say nume_elev
i=i+1
endscan
Subiectul nr.21
Sa se creeze o tabela cu urmatoarea stuctura:Cod_aliment, Den_aliment, Calorii in care introduceti minimum 8 articole. Cerinte:
a. Sa se adauge la sfarsitul tabelei 3 inregisrari noi;
b. Sa se afiseze o lista avand campurile: den_aliment, calorii, in ordinea descrescatoare a caloriilor.
Rezolvare.
Cerinta a.
clear
@2,2 say [Se introduc 3 noi inregistrari]
for i=1 to 2
append blank
@4,4 say[ cod aliment..] get cod_aliment
@5,4 say[ den aliment..] get den_aliment
@6,4 say[ calorii..] get calorii
read
endfor
Cerinta b.
clear
index on calorii tag k descending
set talk off
i=4
@i-1,5 say replicate([-],44)
@i,5 say [Denumire aliment]
@i,26 say [Calorii]
@i+1,5 say replicate([-],44)
scan
@i+2,5 say den_aliment
@i+2,27 say calorii
i=i+1
endscan
Subiectul nr.22
Sa se creeze la nivel de intreprindere o tabela cu urmatoarea stuctura: Nume, Cod_pers, Adresa, Salariul in care introduceti minimum 8 articole. Cerinte:
a. Sa se modifice adresa angajatului al carui nume a fost citit de la tastatura;
b. Sa se afiseze salariul mediu pe intreprindere.
Rezolvare.
Note Cerinta a.
clear
accept[ Introduceti numele ] to n
locate for nume= n
if found()
@4,5 say [Modificati adresa:]
@ 5,5 say adresa get adresa
read
else
wait window [Persoana nu figureaza in tabela !!]
endif
read time 3
clear
note Cerinta b.
set talk off
calculate avg(salariul) to med
@ 5,5 say [Salariul mediu este:]+str(med)
Subiectul nr.23
Sa se creeze o tabela cu rezultatele
sportivilor
a. Sa se afiseze numarul tarilor participante;
b. Sa se afiseze numele sportivilor, numarul de goluri marcate ale unei tari citite de la tastatura.
Rezolvare.
Cerinta a.
clear
index on tara tag tari unique
count to numar
@5,5 say[Numarul tarilor participante:]+str(numar)
read time 3
Cerinta b..
clear
set order to
accept [Introduceti tara:] to tari
i=4
@i-1,5 say replicate([-],48)
@i,5 say [Numele jucatorului]
@i,26 say [Numar goluri]
@i+1,5 say replicate([-],44)
scan for tara=tari
@i+2,11 say nume_sportiv
@i+2,27 say tara
i=i+1
endscan
Subiectul nr.24
Un depozit aprovizioneaza cu produse mai multe magazine. Sa se creeze o tabela cu urmatoarea structura: Cod_produs, Data_livrare, Pret_unitar, Cantitate, Unitate_masura, Cod_magazin in care introduceti minimum 8 articole. Cerinte:
a. Pentru o data_livrare Y (citita de la tastatura) sa se afiseze toate codurile magazinelor si produsele cu care au fost aprovizionate;
b. Sa se determine produsul cel mai solicitat in data_livrare X (citita de la tastatura) si sa se afiseze valoarea totala obtinuta prin vanzarea lui.
Rezolvare.
Cerinta a.
clear
note alter table s27 add column total n(2)
input [Introduceti data calendaristica] to d
clear
i=4
@i-1,5 say replicate([-],44)
@i,5 say [Cod magazin]
@i,21 say [Cod produs]
@i+1,5 say replicate([-],44)
scan for data_livrare=d
@i+2,10 say cod_magazin
@i+2,25 say cod_produs
i=i+1
endscan
read time 3
clear
select 2
use s27 again
delete for data_livrare <> d
set deleted on
index on cod_produs tag cod unique
scan
c=cod_produs
sele 1
count for cod_produs=c to numar
sele 2
replace total with numar
endscan
calculate max(total) to maxi
i=4
@i-1,5 say replicate([-],44)
@i,5 say [Cod produs]
@i+1,5 say replicate([-],44)
scan for total=maxi
@i+2,15 say cod_produs
i=i+1
endscan
Subiectul nr.25
Un magazin se aprovizioneaza cu produse de la mai multe depozite. Creati tabela cu urmatoarea structura: Cod_produs, Cantitate, Pret_unitar, Unitate_masura, Cod_depozit, Data_aprovizionare in care introduceti minimum 8 articole. Cerinte:
a. Pentru un produs dat, afisati cantitatea cu care s-a aprovizionat magazinul in luna X (citita de la tastatura);
b. Afisati valoarea totala a marfurilor transferate de la un depozit cu codul Z (citit de la tastatura).
Rezolvare.
Cerinta a.
clear
input [Introduceti luna..] to l
input [Introduceti anul..] to a
cant=0
input [Produs..] to k
scan for month(data_aprovizionare)=l and;
year(data_aprovizionare)=a and cod_produs=k
cant=cant+cantitate
endscan
@5,6 say [Cantitatea totala]+str(cant)
wait
Cerinta b.
clear
input[Introduceti cod depozit] to z
suma=0
scan for cod_depozit=z
suma=suma+pret_unitar*cantitate
endscan
@6,7 say[valoare totala]+str(suma)
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre:
|
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |