-
CODP: codul unui produs;
-
U_M: unitatea de măsură a produsului;
-
DENP: denumirea produsului;
-
PRET_UNIT: preţul unităţii de produs;
-
CANTITATE: cantitatea existentă a produsului;
-
ştiind că: CODP este unic în baza de date;
-
DENP se poate repeta cu semnificaţia că
acelaşi produs există cu mai multe preţuri, deci cu mai multe
coduri.
Se cer următoarele:
a)cantitatea disponibilă pentru fiecare produs pe categorii de pret, numele produsului afişându-se o singură dată;
b) livrarea unei cantităţi
dintr-un produs din stoc cu specificarea cantităţilor şi
valorilor pe categorii de preţ şi a valorii totale.
2. Fie un vector cu n
componente întregi. Să se determine elementul maxim din vector şi
să se afişeze vectorul după ce elementele din stânga celui maxim
au fost sortate crescător, iar cele din dreapta maximului au fost sortate
descrescător.
program
raisa;
var v:array[1..50] of integer;
var n,i,max,j,aux,k:integer;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('v[',i,']=');readln(v[i]);
end;
k:=0;
max:=v[1];
for i:=1 to n do
if v[i]>max then max:=v[i];
for i:=1 to n do
if max=v[i] then k:=i;
for i:=1 to k do
if v[i]>v[i+1] then begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
end;
for i:=k to n do
if v[i]<v[i+1] then begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
end;
for i:=1 to n do
write(v[i],' ');
readln;
end.
3. Să se creeze un
document care să conţină un tabel de un tip predefinit cu cinci
rânduri şi şapte coloane. Valorile primei coloane reprezintă
numărul curent. La introducerea unei linii noi, numărul curent să
fie introdus automat.
1. Să se creeze
baza de date ABSENTE.DBF cu următoarea structură:
Numele si prenumele C(30)
Absente
motivate N(3)
Absente
nemotivate N(3)
Total
absente N(3)
a)
Să se introducă minim 5 înregistrări în baza de date;
b)
Să se calculeze prin intermediul programului
valorile pentru câmpul Total absente;
c)
Să se afişeze elevii în ordine descrescătoare după câmpul Total absente.
set
talk off
set
bell off
input
"dati optiunea: " to opt
do
while opt<>0
do case
case opt=1
do p1
case opt=2
do p2
endcase
input "dati optiunea: " to opt
enddo
procedure
p1
use
absente23
clear
replace
all tot_abs with (abs_m+abs_n)
list
use
return
procedure
p2
use
absente23
sort
to abs23 on tot_abs/d fields nume,prenume,tot_abs
use
abs23
list
close
all
return
2. Se citeste de la tastatură pentru n
elevi informaţii referitoare la nume, prenume, medie, vârstă.
Sortaţi descrescător elevii după medie, iar dacă au
aceeaşi medie se sortează crescător după nume.
type
elev=record
nume:string[20];
rom,mat,med:real;
end;
vect=array[1..20] of elev;
var
v:vect;
n:integer;
procedure citire;
var f:text;
t,s:string;
e,i:integer;
begin
assign(f,'bac45.txt');
reset(f);
n:=0;
while not eof(f) do begin
readln(f,s);
i:=length(s);
while s[i]<>' '
do i:=i-1;
t:=copy(s,i+1,length(s)-i);
delete(s,i,length(s)-i+1);
n:=n+1;
val(t,v[n].med,e);
i:=length(s);
while s[i]<>' '
do i:=i-1;
t:=copy(s,i+1,length(s)-i);
delete(s,i,length(s)-i+1);
val(t,v[n].mat,e);
i:=length(s);
while s[i]<>' '
do i:=i-1;
t:=copy(s,i+1,length(s)-i);
delete(s,i,length(s)-i+1);
val(t,v[n].rom,e);
v[n].nume:=s;
end;
close(f);
end;
procedure ordonare;
var i,j:integer;
aux,s:elev;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if v[i].med<v[j].med then begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if v[i].med=v[j].med then
if v[i].nume>v[j].nume then
begin
s:=v[i];
v[i]:=v[j];
v[j]:=s;
end;
end;
procedure afisare;
var i:integer;
begin
for i:=1 to n do
writeln(v[i].nume,v[i].med:30:2);
end;
begin
citire;
ordonare;
afisare;
end.
3. Să se creeze un
document WORD, cu numele Sub.doc, în folder-ul (dosarul) Atestat
(dacă dosarul nu există, se crează pe Desktop) în care: să
se scrie o strofă dintr-o poezie la alegere (minim 4 versuri) în care
să se folosească fonturi cu următoarele caracteristici:
dimensiune - 20 puncte; culoare font – verde, culoare fond - roşu; font –
Times New Roman; tip font – bold (aldin); aliniere orizontală: la stânga;
tipul de spaţiere a liniilor: double; pentru documentul creat setaţi
următorul tip de pagină: dimensiune hârtie - A4, margini stânga -
2cm, dreapta – 2.5cm, sus – 2.5cm, jos - 2cm.
1. Se dă baza de
date STATE.DBF cu următoarea structură :
NUME_ŢARĂ C(30)
CAPITALA C(20)
POPULAŢIE N(15)
CONTINENT C(20)
Baza de date se
consideră completă.
a)
Dându-se numele ţării, să se
afişeze capitala şi populaţia;
b)
Să se afişeze toate ţările cu
capitalele lor dintr-un continent dat;
c)
Să se afişeze cât este populaţia
lumii şi populaţia unui continent dat.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
state18
accept
'Dati numele tarii:' to tara
locate
for nume_tara=tara
if
found()
?
capitala,populatie
else
?
'Nu se gaseste!'
endif
use
procedure
prog2
clear
use
state18
accept
'Dati continentul:' to cont
list
nume_tara, capitala for continent=cont off
use
return
procedure
prog3
clear
use
state18
browse
s=0
do
while .not. eof()
s=s+populatie
skip
enddo
?
'Populatia lumii este:',s
go
top
accept
'Dati continentul:' to cont
s=0
gasit=.f.
do
while .not. eof()
if
continent=cont
s=s+populatie
gasit=.t.
endif
skip
enddo
if
gasit=.t.
?
s
else
?
'Nu se gaseste!'
endif
use
return
2. Se citeşte din fişierul atestat.in
pe prima linie n şi apoi pe următoarele n linii câte n
numere 0 si 1 reprezentând matricea de adiacenţă pentru un graf
neorientat.
Calculaţi pentru
fiecare nod gradul şi spuneţi dacă sunt noduri izolate în graf.
Exemplu:
N=4
0 1 1 0
1 0 0 0
1 0 0 1
0 0 1 0
Se va afisa
Gradele 2 1 2 1
Nu sunt varfuri izolate.
type
mat=array [1..50,1..50] of integer;
var
a:mat;
f:text;
p,i,n:integer;
procedure
citire;
var
i,j:integer;
begin
assign(f,'atestat.in');
reset(f);
readln(f,n);
for
i:=1 to n do begin
for
j:=1 to n do
read(f,a[i,j]);
readln; end;
closef(f);
end;
function
grad(x:integer):integer;
var
j,gr:integer;
begin
gr:=0;
for
j:=1 to n do
if
a[x,j]=1 then inc(gr);
grad:=gr;
end;
begin
citire;
p:=0;
for
i:=1 to n do begin
write(grad(i),' ');
if grad(i)=0 then inc(p);
end;
write(p,'noduri izolate');
readln;
end.
3. Să se creeze o
casetă de text cu chenar dublu în care să se scrie cu o orientare
verticală un text de maxim 10 rânduri. Se va scrie cu fonturi Arial de
culoare verde, centrat, pe un fond tot verde, dar de o nuanţă mai
deschisă.
1. Să se creeze
baza de date FARMACIE.DBF cu următoarea structură:
Medicament C(20)
Data_exp D(8)
Numar N(3)
Pret N(10)
a) Să se
introducă minim 5 înregistrări
în baza de date.
b) Să se afişeze
medicamentele expirate în ordine
alfabetică.
set
talk off
set
date to german
set
century off
use
farma24
clear
sort
to far24 on medicament/a for dtoc(data_exp,[,1])>=dtoc(date(),[,1]) fields
medicament,data_exp,pret
use
far24
list
close
all
return
2. Să se determine
toate funcţiile surjective f:{1,2,…,n} ® {1,2,…,m}.
type
stiva=array[1..100] of integer;
var
st:stiva;
m,n,k:integer;
as,ev:boolean;
procedure
init(var st:stiva; k:integer);
begin
st[k]:=0;
end;
procedure
succesor(var st:stiva;k:integer; var as:boolean);
begin
if st[k]<n then
begin
inc(st[k]);
as:=true;
end
else as:=false;
end;
procedure
valid(st:stiva;k:integer; var ev:boolean);
var i,j:integer; ok:boolean;
begin
ev:=true;
if (k=n) then
for i:=1 to m do begin
ok:=false;
for j:=1 to n do
if st[j]=i then ok:=true;
if not(ok) then ev:=false;
end;
end;
function
solutie(k:integer):boolean;
begin
solutie:=(k=n);
end;
procedure
tipar(k:integer);
var i:integer;
begin
for i:=1 to k do
write( 'f(',i,')','=',st[i],' ');
writeln;
end;
begin
write('n=');readln(n);
write('m=');readln(m);
k:=1;
init(st,k);
while k>0 do
begin
repeat
succesor(st,k,as);
if as then valid(st,k,ev);
until (not as)or(as and ev);
if as
then
if solutie(k) then tipar(k)
else begin
inc(k);
init(st,k);
end
else
dec(k);
end;
end.
3. Preluaţi 3
pagini din help-ul windows. Întregul text va fi plasat pe pagini de format
Letter, margini stanga 3 cm, dreapta 2 cm, sus şi jos cate 1.5cm.
Numerotaţi paginile şi puneţi câte una sau două note de
subsol la fiecare pagină. Pe fiecare pagină trebuie să
apară automat în partea de sus a acesteia, numele vostru.
1. Se dă o
bază de date numită CARTI.DBF cu următoarea structură:
titlu C(30), autor C(30), editura C(20), an N(4), preţ N(7), nr N(5), gen
C(15). Realizaţi un program într-un SGBD care să permită
următoarele operaţii:
a)
Introducerea de date noi prin intermediul unei
machete, cu validări pentru date;
b)
Căutarea unei cărţi după nume
sau autor (dacă unul dintre câmpuri e liber, atunci căutarea se va
face după celălalt câmp, altfel - după amândouă).
set
talk off
clear
input
'Dati optinuea:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
endcase
input 'Dati optinuea:' to opt
enddo
procedure
prog1
clear
use
carti
nume=space(30)
autor1=space(30)
editura1=space(20)
an1=0
pret1=0
gen1=space(15)
@
5,5 say 'Dati titlul:' get nume valid nume<> " " error
"EROARE!"
@
6,5 say 'Dati autorul:' get autor1 valid autor1<>" " error
"EROARE!"
@
7,5 say 'Dati editura:' get editura1 valid editura1<>" " error
"EROARE!"
@
8,5 say 'Dati anul:' get an1 valid an1>0 error 'Ati introdus date gresite!'
@
9,5 say 'Dati pretul:' get pret1 valid pret1>0 error 'Ati introdus date
gresite!'
@
10,5 say 'Dati genul:' get gen1
read
append
blank
replace
titlu with nume, autor with autor1, editura with editura1, an with an1, pret
with pret1, gen with gen1
use
return
procedure
prog2
clear
use
carti
nume=space(30)
autor1=space(30)
@
5,5 say 'Dati titlul de cautat:' get nume
@
6,5 say 'Dati autorul de cautat:' get autor1
read
gasit=.f.
do
while .not. eof()
if
(titlu=nume) or (autor=autor1)
gasit=.t.
endif
skip
enddo
if
gasit=.t.
go
top
locate
for (titlu=nume) .or. (autor=autor1)
?
titlu, autor
?
'Cartea se gaseste!'
else
?
'Cartea nu se gaseste!'
endif
use
return
close
all
2. Să se scrie un
program Pascal sau C++ care să afişeze factorul prim care apare la
puterea cea mai mare în descompunerea numărului natural x (citit)
în factori primi.
var
n,i,max,p,k:integer;
begin
write('n=');readln(n);
i:=2;
max:=0;
repeat
p:=0;
while n mod i=0 do begin
p:=p+1;
n:=n div i;
end;
if p<>0 then
if p>max then begin
max:=p;
k:=i;
end;
i:=i+1;
until
n=1;
write(k,'
= ',max);
readln;
end.
3. Să se redacteze
un document Microsoft Word de minimum 10 rânduri care să aibă
următoarele caracteristici: font Arial cu dimensiunea de 12, titlul de 14,
scris la 1.5 rânduri, textul fiind subliniat cu linie dublă; aliniament
stânga – dreapta , indentat la 0,5 cm stânga; să se introducă o
notă de subsol şi să se numeroteze pagina; marginile să fie
de: 3 cm stânga, 1 cm dreapta, 2.5 cm sus, 2 cm jos.
1. Se dă o
bază de date numită FILME.DBF cu următoarea structură:
titlu C(30), regizor C(30), gen C(15), data_apar D(4), buget N(10).
Realizaţi un program într-un SGBD care să permită
următoarele operaţii:
a)
Introducerea de date noi prin intermediul unei
machete, cu validări pentru date;
b)
Căutarea unei film după titlu, regizor sau
buget.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
filme
browse
titlu1=space(30)
regizor1=space(30)
buget1=0
d={//}
gen1=space(15)
@
5,5 say 'Dati titlul :' get titlu1
@
6,5 say 'Dati regizorul:' get regizor1
@
7,5 say 'Dati genul:' get gen1
@
8,5 say 'Dati data:' get d
@
9,5 say 'Dati bugetul:' get buget1
read
append
blank
replace
titlu with titlu1, regizor with regizor1, gen with gen1, data_apar with d,
buget with buget1
browse
use
return
procedure
prog2
clear
use
filme
titlu1=space(30)
regizor1=space(30)
buget1=0
@
5,5 say 'Dati titlul :' get titlu1
@
6,5 say 'Dati regizorul:' get regizor1
@
7,5 say 'Dati bugetul:' get buget1
read
locate
for (titlu=titlu1) .or. (regizor=regizor1) .or. (buget=buget1)
if
found()
?
titlu,regizor
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog3
clear
use
filme
browse
titlu1=space(30)
@
5,5 say 'Dati filmul de sters:' get titlu1
read
locate
for titlu=titlu1
if
found()
dele
pack
?
'S-a sters '+titlu1
browse
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog4
clear
use
filme
browse
titlu1=space(30)
regizor1=space(30)
buget1=0
d={//}
gen1=space(15)
@
5,5 say 'Dati filmul de modificat:' get titlu1
@
6,5 say 'Dati regizorul:' get regizor1
@
7,5 say 'Dati genul:' get gen1
@
8,5 say 'Dati data:' get d
@
9,5 say 'Dati bugetul:' get buget1
read
locate
for titlu=titlu1
if
found()
replace
regizor with regizor1, gen with gen1, data_apar with d, buget with buget1
?
'Se gaseste!'
browse
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
filme
max=0
d={//}
do
while .not. eof()
if
buget> max
max=buget
endif
if
data_apar>d
d=data_apar
endif
skip
enddo
go
top
do
while .not. eof()
if
buget=max
?
titlu,buget
endif
if
data_apar=d
?
titlu,data_apar
endif
skip
enddo
go
top
gasit=.f.
accept
'Dati genul:' to gen1
do
while .not. eof()
if
gen=gen1
?
titlu,gen
gasit=.t.
endif
skip
enddo
if
gasit=.t.
?
'Se faseste!'
else
?
'Nu se gaseste!'
endif
use
return
2. Se citesc din
fişierul atestat.in pe mai multe rânduri mai multe numere naturale
de cel mult 3 cifre despărţite prin spaţiu (pe o linie cel mult
100 numere). Scrieţi în fişierul atestat.out pe fiecare linie
numerele din fişierul iniţial dar sortate crescător.
Exemplu:
atestat.in
3
8 5
8
3 9
4
1
atestat.out
3
5 8
3
8 9
1
4
program
vau;
type
vector=array[1..100] of integer;
var v:vector;
f,g:text;
n:integer;
procedure
citire ( var v:vector; var n:integer);
begin
n:=0;
while not eoln(f) do
begin
inc(n);
read (f,v[n]);
end;
readln (f);
end;
procedure
afisare ( v:vector; n:integer);
var
i:integer;
begin
for i:= 1 to n do
write (g,v[i],' ');
writeln (g);
end;
procedure
ordonare ( var v:vector; n:integer);
var
i,aux:integer;
ok:boolean;
begin
repeat
ok:=true;
for i:= 1 to n-1 do
if v[i]>v[i+1] then begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
ok:=false;
end;
until ok;
end;
begin
assign
(f,'bacut.in');reset(f);
assign
(g,'bacut.out');rewrite(g);
while not eof(f) do begin
citire(v,n);
ordonare(v,n);
afisare (v,n);
end;
close(f);
close(g);
end.
3. Să se redacteze
un document Microsoft Word de minimum 5 rânduri care să aibă
următoarele caracteristici: font Arial cu dimensiunea de 10, titlul de 14,
scris la 2.5 rânduri, titlul fiind subliniat cu linie şerpuită;
aliniament stânga – dreapta; să se insereze 3 ecuaţii matematice: o
sumă, o integrală şi o matrice, fiecare având asociată câte
o notă de subsol; marginile documentului să fie de: 2.3 cm stânga,
1.2 cm dreapta, 1.7 cm sus, 2.8 cm jos.
1. Se dă o
bază de date numită ELEVI.DBF cu următoarea structură: nume
C(40), clasa C(3), matricol N(5), adresa C(30), telefon C(10). Realizaţi
un program într-un SGBD care să permită următoarele
operaţii:
a)
Căutarea unui elev după nume sau
numărul matricol;
b)
Ştergerea unui elev;
c)
Modificarea datelor personale ale unui elev.
set
talk off
clear
input
'Dati optiunea:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
endcase
input 'Dati optiunea:' to opt
enddo
procedure
prog1
clear
use
elevi3
nume1=space(40)
clasa1=space(3)
matricol1=0
adresa1=space(30)
tel=space(10)
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati clasa:' get clasa1
@
7,5 say 'Dati matricol:' get matricol1 valid matricol1>0 error 'Ati introdus
date gresite!'
@
8,5 say 'Dati adresa:' get adresa1
@
9,5 say 'Dati tel:' get tel
read
append
blank
replace
nume with nume1, clasa with clasa1, matricol with matricol1, adresa with
adresa1, telefon with tel
use
return
procedure
prog2
clear
use
elevi3
accept
'Dati clasa:' to clasa1
gasit=.f.
do
while .not. eof()
if
clasa=clasa1
gasit=.t.
? nume,matricol,adresa,telefon
endif
skip
enddo
if
gasit=.t.
?
'Se gaseste!'
else
?
'Nu exista!'
endif
use
return
procedure
prog3
clear
use
elevi3
nume1=space(40)
matricol1=0
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati matricol:' get matricol1
read
gasit=.f.
do
while .not. eof()
if
(nume=nume1) .or. (matricol=matricol1)
gasit=.t.
?
nume,matricol
endif
skip
enddo
if
gasit=.t.
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog4
clear
use
elevi3
accept
'Dati numele:' to nume1
locate
for nume=nume1
if
found()
dele
pack
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
elevi3
nume1=space(40)
clasa1=space(3)
matricol1=0
adr=space(30)
tel=space(10)
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati clasa:' get clasa1
@
7,5 say 'Dati matricol:' get matricol1
@
8,5 say 'Dati adresa:' get adr
@
9,5 say 'Dati tel:' get tel
read
locate
for nume=nume1
if
found()
replace
clasa with clasa1, matricol with matricol1, adresa with adr, telefon with tel
else
?
'Nu se gaseste!'
endif
use
return
2. Să se scrie un
program Pascal care să calculeze recursiv suma cifrelor unui număr.
var
x:longint;
function
suma(x:longint):longint;
begin
if
x=0 then suma :=0
else suma:=x mod 10 +suma(x div 10);
end;
begin
write('x=');readln(x);
if x>0 then writeln(suma(x));
readln;
end.
3. Să se creeze un
document care să conţină un text scris pe două coloane,
astfel încât prima coloană să fie de două ori mai lată
decât a doua coloană. Pe prima coloană din text să se insereze o
imagine care să fie încadrată în text.
1. Se dă baza de date ELEVI.DBF, în care se
consideră completate câmpurile nume, nota_rom şi nota_mat.
NUME C(30)
NOTA_ROM N(5,2)
NOTA_MAT N(5,2)
MEDIA N(5,2)
a)
Să se scrie un program pentru a calcula mediile
elevilor;
b)
Să se listeze în ordine descrescătoare
după medie, elevii admişi (media şi notele>=5);
c)
Să se tipărească la cererea unui
nume, notele şi media acelui elev.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do
prog2
case opt=3
do prog3
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
elevi21
replace
all media with (nota_rom+nota_mat)/2
browse
use
return
procedure
prog2
clear
use
elevi21
browse
sort
to rez21 on media/d for (media>=5) .and. (nota_rom>=5) .and.
(nota_mat>=5) fields nume,media
use
rez21
browse
close
all
return
procedure
prog3
clear
use
elevi21
accept
'Dati numele:' to nume1
locate
for nume=nume1
if
found()
?
nume,nota_rom,nota_mat,media
else
?
'Nu se gaseste!'
endif
use
return
2. Să se ordoneze crescător un vector
de n elemente numere reale folosind metoda selecţiei.
var
v:array[1..50] of integer;
i,j,aux,n:integer;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('v[',i,']=');readln(v[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if v[i]>v[j] then begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
end;
for i:=1 to n do write(v[i],' ');
readln;
end.
3. Să se redacteze
o adeverinţă de elev în Microsoft Word care să aibă
următoarele caracteristici: font Verdana cu dimensiunea de 12, titlul de
14, scris la 1.5 rânduri; aliniament stânga – dreapta pentru corpul textului,
şi centrat pentru titlu; să se insereze un antet cu denumirea
instituţiei şi cu adresa, iar subsolul să conţină data
şi ora sistemului; documentul să fie încadrat de un dreptunghi cu
margine simplă.
1. Să se scrie un
program care realizează următoarele cerinţe:
a)
Creează un fişier CĂRŢI.DBF
(autor, titlu, domeniu, anap, editura) care cuprinde informaţii despre
cărţile dintr-o bibliotecă;
b) Afişează cărţile în
ordinea editura, autor, titlu.
set
talk off
clear
use
carti76
an1=0
editura1=space(30)
@
1,1 say 'dati an: ' get an1
@
2,1 say 'dati editura: 'get editura1
read
sort
to car76 on autor/a ,titlu/a for (anap=an1) .and. (editura=editura1) fields
autor,titlu,anap
use
car76
list
close
all
return
2. Se citeşte un
text şi o secvenţă. Să se determine numărul de
apariţii al secvenţei în text.
var s,c:string;
nr,p,l:integer;
begin
write('s=');readln(s);
write('c=');readln(c);
nr:=0;
l:=length(c);
repeat
p:=pos(c,s);
if p>0 then begin
nr:=nr+1;
delete(s,p,l);
end;
until p=0;
writeln(nr,' ');
readln;
end.
3. Să se scrie un document
word având la bază o machetă predefinită.
BILET 10
1. Se dă o bază de
date numită MAŞINI.DBF cu următoarea structură: numar C(7),
marca C(20), culoare C(15), an_fabric N(4), proprietar C (30), adresa C(20).
Realizaţi un program într-un SGBD care să permită următoarele
operaţii:
a) Introducerea de date
noi prin intermediul unei machete, cu validări pentru date;
b) Căutarea unei
maşini după număr, proprietar sau caracteristici.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
masini
nr=space(7)
marca1=space(20)
culoare1=space(15)
an=0
prop=space(30)
adr=space(20)
@
5,5 say 'Dati nr:' get nr
@
6,5 say 'Dati marca:' get marca1
@
7,5 say 'Dati culoarea:' get culoare1
@
8,5 say 'Dati anul:' get an
@
9,5 say 'Dati prop:' get prop
@
10,5 say 'Dati adr:' get adr
read
append
blank
replace
numar with nr, marca with marca1, culoare with culoare1, an_fabric with an,
proprietar with prop, adresa with adr
use
return
procedure
prog2
clear
use
masini
nr=space(7)
marca1=space(20)
culoare1=space(15)
an=0
prop=space(30)
adr=space(20)
@
5,5 say 'Dati nr:' get nr
@
6,5 say 'Dati marca:' get marca1
@
7,5 say 'Dati culoarea:' get culoare1
@
8,5 say 'Dati anul:' get an
@
9,5 say 'Dati prop:' get prop
read
locate
for (numar=nr) .or. (marca=marca1) .or. (culoare=culoare1) .or. (an_fabric=an)
.or. (proprietar=prop)
if
found()
?
numar,proprietar
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog3
clear
use
masini
list
off
clear
nr=space(7)
@
5,5 say 'Dati nr:' get nr
read
locate
for numar=nr
if
found()
dele
pack
else
?
'Nu se gaseste!'
endif
list
off
use
return
procedure
prog4
clear
use
masini
nr=space(7)
marca1=space(20)
culoare1=space(15)
an=0
prop=space(30)
adr=space(20)
@
5,5 say 'Dati nr:' get nr
@
6,5 say 'Dati marca:' get marca1
@
7,5 say 'Dati culoarea:' get culoare1
@
8,5 say 'Dati anul:' get an
@
9,5 say 'Dati prop:' get prop
@
10,5 say 'Dati adr:' get adr
read
locate
for numar=nr
if
found()
replace
marca with marca1, culoare with culoare1, an_fabric with an, proprietar with
prop, adresa with adr
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
masini
sort
to rez_5_6 on an_fabric/d
use
rez_5_6
browse
sort
to rezu_5_6 on marca/ac
use
rezu_5_6
browse
close
all
return
2. Se citeşte din
fişierul atestat.in un text pe mai multe linii. Scrieţi în
fişierul atestat.out acelaşi text dar în care se schimbă
literele mici cu litere mari şi literele mari cu litere mici.
Exemplu:
atestat.in
Tata Este la
PiatA?
atestat.out
TATA eSTE LA
pIATa?
var
s:string;
f,g:text;
i:byte;
begin
assign(f,'bac42.in');
reset(f);
assign(g,'bac42.out');
rewrite(g);
while
not eof(f) do begin
readln(f,s);
for i:=1 to length(s) do
begin
if (s[i]>='a') and
(s[i]<='z') then s[i]:=chr(ord(s[i])-32)
else if (s[i]>='A') and (s[i]<='Z') then s[i]:=chr(ord(s[i])+32);
end;
writeln(g,s);
end;
close(f);
close(g);
end.
3. Creaţi un shortcut pentru Turbo Pascal şi aranjaţi apoi
icoanele existente după nume. Să se insereze într-un document o
captură de ecran.
BILET 11
1. Se dă baza de date
SPITAL.DBF cu datele introduse şi cu următoarea structură:
NUME C(30)
BOALĂ C(20)
ZILETRAT N (3)
a)
Să se afişeze toţi bolnavii care au o
anumită boală;
b)
Să se introducă numele şi să se
afişeze boala pacientului şi numărul zilelor de tratament;
c)
Să se afişeze toţi pacienţii în
ordine alfabetică.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
spital20
browse
accept
'Dati boala:' to boala1
browse
fields nume for boala=boala1
use
return
procedure
prog2
clear
use
spital20
accept
'Dati numele:' to nume1
locate
for nume=nume1
if
found()
?
boala, nrziletrat
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog3
clear
use
spital20
browse
sort
to rez20 on nume/a fields nume,boala,nrziletrat
use
rez20
browse
close
all
return
2. Se citeşte de la
tastatură un număr natural n (100<=n<=999).
Dintre numerele naturale mai mici sau egale cu n, să se
afişeze acelea care sunt divizibile cu suma cifrelor lor.
program
oana;
var
n,i,x,s,c:integer;
begin
write('n=');readln(n);
for
i:=1 to n do begin
x:=i;
s:=0;
repeat
c:=x
mod 10;
s:=s+c;
x:=x
div 10;
until
x=0;
if
i mod s =0 then write(i,' ');
end;
readln;
end.
3. Să se modifice
fonturile cu care sunt scrise numele pictogramelor de pe desktop.
1. Se dă baza de date
STUDENT.DBF care conţine câmpurile:
NUME C(30)
MEDIA N(5,2)
TIPBURSA C(1)
a)
dacă nu are bursă (media<8)
b)
dacă are bursa tip1-1.000.000(media între
8-9.49)
c)
dacă are bursa tip2-2.000.000(media între
9.50-10)
a)
Să se scrie un program pentru a completa tipul
de bursă şi în cazul în care studenţii sunt bursieri, să se
completeze şi suma corespunzătoare;
b)
Să se afişeze studenţii bursieri
cerând tipul bursei, şi să se calculeze sumele totale necesare pentru
fiecare tip de bursă.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
student
do
while .not. eof()
if
media<8
replace
tipbursa with '0'
else
if
(media>=8) .and. (media<9.50)
replace
tipbursa with '1'
replace
suma with 1000000
else
replace
tipbursa with '2'
replace
suma with 2000000
endif
endif
skip
enddo
browse
use
return
procedure
prog2
clear
use
student
accept
'Dati tipul bursei:' to tip
gasit=.f.
do
while .not. eof()
if
tipbursa=tip
?
nume
gasit=.t.
endif
skip
enddo
if
gasit=.t.
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
go
top
s1=0
s2=0
do
while .not. eof()
if
tipbursa='1'
s1=s1+suma
else
if
tipbursa='2'
s2=s2+suma
endif
endif
skip
enddo
?
s1
?
s2
use
return
2. Să se scrie un program
în limbajul Borland Pascal sau Borland C++ care să descompună un n (natural nenul) dat în sumă de
două numere prime distincte. Dacă problema nu are soluţie, se va
afişa un mesaj corespunzător.
var
n,f,i,j,p:integer;
ok:boolean;
begin
write('n=');readln(n);
f:=2;
{ok:=false;}
while n>0 do begin
p:=0;
while n mod f=0 do begin
n:=n div f;
p:=p+1;
end;
if p>0 then {begin}
{ok:=true;}
write(f,'la puterea',p,' ');
{end;}
f:=f+1;
{if not (ok) then write('
problema nu are solutie');}
end;
readln;
end.
3. Exlicaţi cum se poate
căuta un fişier cu ajutorul aplicaţiei Find.
Creaţi o
pictogramă pe suprafaţa de lucru pentru fişierul Explorer.exe
din directorul Windows.
1. Se dă o bază de
date numită BANCA.DBF cu următoarea structură: valuta C(25),
data D(8), valoare N(5), cantitate N(10). Realizaţi un program într-un
SGBD care să permită următoarele operaţii:
d)
Introducerea de date noi prin intermediul unei
machete, cu validări pentru date;
e)
Căutarea valorii unei anumite valute dintr-o
anumită zi;
f)
Afişarea preţului maxim al unei valute
date dintr-o anumită lună;
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
case opt=6
do prog6
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
banca
browse
valuta1=space(25)
data1={//}
val=0
cant=0
@
5,5 say 'Dati valuta:' get valuta1
@
6,5 say 'Dati data:' get data1 valid data1<date() error 'Ati introdus date
gresite!'
@
7,5 say 'Dati valoarea:' get val valid val>0 error 'Ati introdus date
gresite!'
@
8,5 say 'Dati cantitatea:' get cant valid cant>0 error 'Ati introdus date
gresite!'
read
append
blank
replace
valuta with valuta1, data with data1, valoare with val, cantitate with cant
browse
use
return
procedure
prog2
clear
use
banca
browse
input
'Dati ziua:' to zi
accept
'Dati valuta:' to valuta1
locate
for (valuta=valuta1) .and. (zi=day(data))
if
found()
?
valuta, valoare, data
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog3
clear
use
banca
browse
accept
'Dati valuta:' to valuta1
input
'Dati data:' to luna
max=0
do
while .not. eof()
if
(valuta=valuta1) .and. (luna=month(data))
if valoare>max
max=valoare
endif
endif
skip
enddo
?
max
use
return
procedure
prog4
clear
use
banca
browse
accept
'Dati valuta de sters:' to valuta1
locate
for valuta=valuta1
if
found()
dele
pack
browse
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
banca
browse
accept
'Dati valuta pt modif:' to valuta1
locate
for valuta=valuta1
if
found()
d={//}
val=0
cant=0
@
5,5 say 'Dati data:' get d
@
6,5 say 'Dati valoarea:' get val
@
7,5 say 'Dati cantitatea:' get cant
read
replace
data with d, valoare with val, cantitate with cant
browse
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog6
clear
use
banca
browse
input
'Dati ziua:' to zi
s=0
gasit=.f.
do
while .not. eof()
if
zi=day(data)
s=s+valoare*cantitate
gasit=.t.
endif
skip
enddo
if
gasit=.t.
?
'Se gaseste!'
?
s
else
?
'Nu se gaseste!'
endif
use
return
2. Să se determine câte
elemente prime se află deasupra diagonalei secundare a unei matrice cu n
x n elemente naturale.
program
andi;
var a:array[1..50,1..50] of integer;
var i,j,n,d,k:integer;
ok:boolean;
begin
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do begin
write('a[',i,',',j,']=');readln(a[i,j]);
end;
k:=0;
for i:=1 to n-1 do
for j:=1 to n-i do begin
ok:=true;
for d:=2 to a[i,j] div 2 do begin
if (a[i,j] mod d =0) then ok:=false;
if a[i,j]=1 then ok:=false;
end;
if ok then k:=k+1;
end;
write(k,' ');
readln;
end.
3. Creaţi o pagină A4
cu marginile de 1.5 cm pe toate cele patru laturi care să
conţină un antet care în paginile pare să conţină
numele documentului, iar în paginile impare (exceptând prima pagină)
să conţină numele autorului.
1. Fie tabela TELEFOANE (nume,
telefon, adresa). Se citeşte de la intrare numele unui abonat. Se cere
să se afişeze telefonul şi adresa la toţi abonaţi care
au acelaşi nume cu cel citit de la intrare.
2. Să se creeze un
fişier text numit regine.txt care va cuprinde toate soluţiile
problemei celor 8 regine. O soluţie este formată dintr-o matrice de
8*8 caractere, în fiecare linie găsindu-se 7 caractere „-” şi un
caracter „R” (pentru poziţia reginei). Intre 2 soluţii va fi o linie
vidă.
3. Preluaţi un text
oarecare de pe calculator (minim 30 rânduri) şi poziţionaţi-l
întro pagină Word format A4 pe lăţime. Textul va avea
următorul format: 2 coloane; aliniere la ambele margini; distanţa
dintre rânduri Double; începutul de paragrafe la 2 cm de margine. Să se
insereze în spatele textului o imagine.
1. Fiind dată o bază
de date cu informaţii referitoare la ţările lumii, să se
răspundă la urmatoarele cerinţe:
- care sunt ţările
Africii;
- lista ţărilor pe
continente;
- care sunt ţările
cu cea mai mare suprafaţă (primele trei);
- lista ţărilor în
ordinea descrescătoare a densităţii populaţiei;
set
talk off
set
safety off
use
cont in 1
@
1,1 say 'Tarile Africii :'
display
all for alltrim(continent)='africa' fields tara off
wait
wind
clear
sort
to temp on continent
use
temp in 2
sele
2
index
on continent tag nume unique
scan
c=continent
sele 1
? c
display all for
alltrim(continent)=alltrim(c) off fields tara
sele 2
endscan
wait
wind
clear
sele
1
index
on suprafata tag supr
go
bottom
?
'Tarile cu suprafata cea mai mare:'
for
i=1 to 3
? tara,' ',suprafata
skip -1
endfor
wait
wind
clear
sort
to adina on densitate /d
use
adina in 3
sele
3
display
all off fields tara, densitate
wait
wind
clear
close
all
2. Să se determine toate
numerele întregi de 3 cifre cu proprietatea că
numărul este egal cu suma cuburilor cifrelor.
Ex : 371=33+73+13.
var
n,i,j,p,s,x,c:integer;
ok:boolean;
begin
for
i:=100 to 999 do begin
x:=i;
p:=1;
s:=0;
repeat
c:=x mod 10;
p:=c*c*c;
s:=s+p;
x:=x div 10;
until x=0;
if i=s then write(i,' ');
end;
readln;
end.
3. Scrieţi un text
oarecare pe calculator într-o pagină WORD format A4 pe lăţime.
Textul va avea următorul format: 3 coloane; aliniere Justify (la ambele
margini); distanta dintre rânduri Double; începutul de paragraf la 2 cm de margine.
Coloanele vor fi separate printr-o linie.
BILET 16
1. Scrieţi un program care
realizeaza următoarele cerinţe:
-
crează un fişier cărţi
care cuprinde toate informaţiile despre cărţile dintr-o
bibliotecă, fişier care conţine câmpurile: autor C20, titlu
C20, domeniu C20, an_aparitie N4, editura C15
-
caută o carte după titlu aproximativ
-
afişează toate cărţile unei
edituri care au apărut într-un anumit an în ordine alfabetică
după autor, iar în cadrul unui autor sortate alfabetic după titlu.
2. Scrieţi un program care
afişează toate numerele prime de trei cifre ale căror inverse
sunt tot prime.
program
oana;
var
n,i,j,m,inv,c:integer;
ok,ok1:boolean;
function
prim(x:integer):boolean;
var
i,d:integer;
o:boolean;
begin
if
x mod 2=0 then prim:=false
else begin
o:=true;
d:=3;
while d<=trunc(sqrt(x)) do
if x mod d=0 then begin
o:=false;
d:=x;
end
else
d:=d+2;
end;
if
o then prim:=true;
end;
begin
j:=100;
while
j<=999 do begin
ok:=false;
if prim(j) then ok:=true;
if ok then begin
inv:=0;
m:=j;
repeat
c:=m mod
10;
inv:=inv*10+c;
m:=m div 10;
until m=0;
ok1:=false;
if prim(inv)
then ok1:=true;
if ok1 then
write(j,' ');
end;
j:=j+1;
end;
readln;
end.
3. Preluaţi o
secvenţă de text din Help-ul Windows. Formataţi acest text
astfel: pagină A4 portret toate marginile de 2 cm; titlul încercare
corp 32 Times New Roman bold, subliniat cu două linii; textul pe două
coloane cu linie despărţitoare între ele; 3 zone de text, a câte 5
rânduri vor fi marcate cu fond verde.
1. Să se creeze baza de date ELEVI.DBF cu următoarea
structură:
cod nume mat
rom medie promovat
n,3 c,30 n,5,2 n,5,2 n,5,2 L
Să se creeze un program
cu următoarele opţiuni:
a) Actualizarea bazei de
date: modificare şi adăugare;
b) Să calculeze
câmpurile medie şi promovat (medie>5, mat>5, rom>5)
2. Se citeşte de la
tastatură un număr natural a şi un număr natural b
(a, b de cel mult 9 cifre). Scrieţi cele două numere în
baza 2 pe 32 biţi şi spuneţi câte poziţii dintre cele 32
conţin cifre distincte.
Exemplu:
a=27
b=13
a este
000000000000000000000000000011011
b este
000000000000000000000000000001101
Se va afişa 3.
var
u,v:array[1..32] of byte;
a,b:longint;
i,j:integer;
begin
write('a=');readln(a);
write('b=');readln(b);
i:=32;
while
a>0 do begin
u[i]:=a mod 2;
a:=a div 2;
dec(i);
end;
i:=32;
while
b>0 do begin
v[i]:=b mod 2;
b:=b div 2;
dec(i);
end;
j:=0;
for
i:=1 to 32 do
if
u[i]<>v[i] then inc(j);
write(j);
readln;
end.
3. Preluaţi un text
oarecare din help-ul din word (minim 30 de rânduri) şi aşezaţi-l
într-un document word într-o pagină format A4, pe lăţime. Textul
va avea următorul format: 2 coloane; aliniere justify (la
ambele margini); distanţa între rânduri double. Să se
insereze o imagine de tip bmp în text.
1. Se dă o bază de
date numită CARTI.DBF cu următoarea structură: titlu C(30),
autor C(30), editura C(20), an N(4), preţ N(7), nr N(5), gen C(15).
Realizaţi un program într-un SGBD care să permită
următoarele operaţii:
a) Calculul valorii tuturor
cărţilor din baza de date şi a cărţilor
de un anumit gen (se va selecta genul dintr-un popup care să
conţină toate genurile existente în baza de date);
b) Ştergerea unei
cărţi;
c) Modificarea preţului
unei cărţi.
set
talk off
use
cartea
clear
input
"dati optiunea " to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
endcase
input "dati optiunea " to opt
enddo
procedure
prog1
use
cartea
clear
s=0
do
while .not. eof()
s=s+nr*pret
skip
enddo
?
s
gen1=space(15)
@
5,1 say 'dati genul ' get gen1
read
s1=0
locate
for gen=gen1
if found()
set filter to gen=gen1
scan
s1=s1+nr*pret
endscan
set filter to
? s1
else
? "nu exista genul"
endif
use
return
procedure prog2
use cartea
clear
titlu1=space(30)
@ 1,1 say 'dati titlu' get titlu1
read
locate for titlu=titlu1
if found()
dele
pack
else
? 'cartea nu se gaseste'
endif
use
return
procedure prog3
use cartea
clear
titlu1=space(30)
@ 1,1 say 'dati titlu' get titlu1
read
locate for titlu=titlu1
if found()
pret1=0
@ 2,1 say 'dati pret' get pret1
read
replace pret with pret1
endif
use
return
2. Se citeşte de la
tastatură un n natural nenul.
Să se scrie un program în limbajul Borland Pascal sau Borland C++ care
să genereze o matrice cu n linii
şi n coloane care să fie
completată pe linii cu primele numere prime.
program
oana;
var
a:array[1..50,1..50] of integer;
m,n,i,j,k,l:integer;
function
prim(x:integer):boolean;
var
i:integer;
begin
prim:=true;
for
i:=2 to x div 2 do
if
x mod i =0 then prim:=false;
end;
begin
write('n=');readln(n);
for
i:=1 to n do
for
j:=1 to n do
a[i,j]:=0;
m:=n*n;
k:=0;
l:=2;
i:=0;
while k<=m do begin
i:=i+1;
j:=0;
if prim(l) then begin
j:=j+1;
a[i,j]:=l;
k:=k+1;
l:=l+1;
end;
end;
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
readln;
end.
3. Să se creeze două
dosare (foldere) AT1, AT2 şi apoi să se copieze unul în
celălalt. Să se creeze un document Word ce conţine o casetă
de text cu bordura îngroşată în care să se scrie tema voastră
de atestat.
1. Să se creeze baza de
date ABSENTE.DBF cu următoarea structură:
Numele si prenumele C(30)
Absente
motivate N(3)
Absente nemotivate N(3)
Total
absente N(3)
g)
Să se introducă minim 5 înregistrări în baza de date.
h)
Să se calculeze prin intermediul programului
valorile pentru câmpul Total absente.
i)
Să se afişeze elevii în ordine descrescătoare după câmpul Total absente.
set
talk off
set
bell off
input
"dati optiunea: " to opt
do
while opt<>0
do case
case opt=1
do p1
case opt=2
do p2
endcase
input "dati optiunea: " to opt
enddo
procedure
p1
use
absente23
clear
replace
all tot_abs with (abs_m+abs_n)
list
use
return
procedure
p2
use
absente23
sort
to abs23 on tot_abs/d fields nume,prenume,tot_abs
use
abs23
list
close
all
return
2. Scrieţi un program
Pascal sau C++ care să afişeze câte cifre pare şi câte cifre
impare conţine un număr natural (cu maxim 8 cifre), citit de la
tastatură.
program
sanda;
var
n,i,j,k:integer;
begin
write('n=');readln(n);
i:=0;
j:=0;
repeat
k:=n mod 10;
if k mod 2 =0 then i:=i+1
else j:=j+1;
n:=n div 10;
until n=0;
write(i,' ',j);
readln;
end.
3. Să se creeze un
document WORD, cu numele Sub.doc, în folder-ul (dosarul) Atestat
(dacă dosarul nu există, se crează pe Desktop) în care: să
se scrie 5 rânduri la alegere în care să se folosească fonturi cu
următoarele caracteristici: dimensiune - 18 puncte; culoare font – negru,
culoare fond - galben; font – arial black; tip font – înclinat şi
subliniat; aliniere orizontală: centrat; tipul de spaţiere a
liniilor: la 1.5 rânduri; pentru documentul creat setaţi următorul
tip de pagină: dimensiune hârtie - A4 – tip vedere (landscape), margini
stânga - 3cm, dreapta - 3cm, sus – 2.5cm, jos – 2.5cm.
1. Se dă o bază de
date numită ELEVI.DBF cu următoarea structură: nume C(40), clasa
C(3), matricol N(5), adresa C(30), telefon C(10). Realizaţi un program
într-un SGBD care să permită următoarele operaţii:
a) introducerea de date noi
prin intermediul unei machete, cu validări pentru date;
b) afişarea datelor
personale ale elevilor unei clase date de la tastatură.
set
talk off
clear
input
'Dati optiunea:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
endcase
input 'Dati optiunea:' to opt
enddo
procedure
prog1
clear
use
elevi3
nume1=space(40)
clasa1=space(3)
matricol1=0
adresa1=space(30)
tel=space(10)
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati clasa:' get clasa1
@
7,5 say 'Dati matricol:' get matricol1 valid matricol1>0 error 'Ati introdus
date gresite!'
@
8,5 say 'Dati adresa:' get adresa1
@
9,5 say 'Dati tel:' get tel
read
append
blank
replace
nume with nume1, clasa with clasa1, matricol with matricol1, adresa with
adresa1, telefon with tel
use
return
procedure
prog2
clear
use
elevi3
accept
'Dati clasa:' to clasa1
gasit=.f.
do
while .not. eof()
if
clasa=clasa1
gasit=.t.
? nume,matricol,adresa,telefon
endif
skip
enddo
if
gasit=.t.
?
'Se gaseste!'
else
?
'Nu exista!'
endif
use
return
procedure
prog3
clear
use
elevi3
nume1=space(40)
matricol1=0
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati matricol:' get matricol1
read
gasit=.f.
do
while .not. eof()
if
(nume=nume1) .or. (matricol=matricol1)
gasit=.t.
?
nume,matricol
endif
skip
enddo
if
gasit=.t.
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog4
clear
use
elevi3
accept
'Dati numele:' to nume1
locate
for nume=nume1
if
found()
dele
pack
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
elevi3
nume1=space(40)
clasa1=space(3)
matricol1=0
adr=space(30)
tel=space(10)
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati clasa:' get clasa1
@
7,5 say 'Dati matricol:' get matricol1
@
8,5 say 'Dati adresa:' get adr
@
9,5 say 'Dati tel:' get tel
read
locate
for nume=nume1
if
found()
replace
clasa with clasa1, matricol with matricol1, adresa with adr, telefon with tel
else
?
'Nu se gaseste!'
endif
use
return
2. Să se determine câte
elemente prime se află deasupra diagonalei principale a unei matrice cu n
x n elemente naturale.
program
andi;
var a:array[1..50,1..50] of integer;
var i,j,n,d,k:integer;
ok:boolean;
begin
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do begin
write('a[',i,',',j,']=');readln(a[i,j]);
end;
k:=0;
for i:=1 to n-1 do
for j:=i+1 to n do begin
ok:=true;
for d:=2 to a[i,j] div 2 do
if a[i,j] mod d =0 then ok:=false;
if ok then k:=k+1;
end;
write(k,' ');
readln;
end.
3. Să
se creeze un document care să conţină un tabel de un tip
predefinit cu cinci rânduri şi şapte coloane. Tabelul să
conţină următoarele informaţii: număr curent,
numele şi prenumele, înălţime (cm), greutate (kg), vârstă
(ani) pentru mai multe persoane. După crearea tabelului să se
introducă în tabel o nouă coloană între a doua şi a
treia coloană în care să se reţină sexul
fiecărei persoane.
1. Se dă o bază de
date numită MAŞINI.DBF cu următoarea structură: numar C(7),
marca C(20), culoare C(15), an_fabric N(4), proprietar C (30), adresa C(20).
Realizaţi un program într-un SGBD care să permită
următoarele operaţii:
a)
Ştergerea unei maşini;
b)
Modificarea informaţiilor despre o
maşină;
c)
Afişarea tuturor maşinilor în ordine
descrescătoare după anul fabricaţiei, apoi alfabetic după
marcă.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
masini
nr=space(7)
marca1=space(20)
culoare1=space(15)
an=0
prop=space(30)
adr=space(20)
@
5,5 say 'Dati nr:' get nr
@
6,5 say 'Dati marca:' get marca1
@
7,5 say 'Dati culoarea:' get culoare1
@
8,5 say 'Dati anul:' get an
@
9,5 say 'Dati prop:' get prop
@
10,5 say 'Dati adr:' get adr
read
append
blank
replace
numar with nr, marca with marca1, culoare with culoare1, an_fabric with an,
proprietar with prop, adresa with adr
use
return
procedure
prog2
clear
use
masini
nr=space(7)
marca1=space(20)
culoare1=space(15)
an=0
prop=space(30)
adr=space(20)
@
5,5 say 'Dati nr:' get nr
@
6,5 say 'Dati marca:' get marca1
@
7,5 say 'Dati culoarea:' get culoare1
@
8,5 say 'Dati anul:' get an
@
9,5 say 'Dati prop:' get prop
read
locate
for (numar=nr) .or. (marca=marca1) .or. (culoare=culoare1) .or. (an_fabric=an)
.or. (proprietar=prop)
if
found()
?
numar,proprietar
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog3
clear
use
masini
list
off
clear
nr=space(7)
@
5,5 say 'Dati nr:' get nr
read
locate
for numar=nr
if
found()
dele
pack
else
?
'Nu se gaseste!'
endif
list
off
use
return
procedure
prog4
clear
use
masini
nr=space(7)
marca1=space(20)
culoare1=space(15)
an=0
prop=space(30)
adr=space(20)
@
5,5 say 'Dati nr:' get nr
@
6,5 say 'Dati marca:' get marca1
@
7,5 say 'Dati culoarea:' get culoare1
@
8,5 say 'Dati anul:' get an
@
9,5 say 'Dati prop:' get prop
@
10,5 say 'Dati adr:' get adr
read
locate
for numar=nr
if
found()
replace
marca with marca1, culoare with culoare1, an_fabric with an, proprietar with
prop, adresa with adr
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
masini
sort
to rez_5_6 on an_fabric/d
use
rez_5_6
browse
sort
to rezu_5_6 on marca/ac
use
rezu_5_6
browse
close
all
return
2. Să se scrie un program
care determină şi afişează toate numerele prime mai mici
sau egale cu o valoare n naturală, citită de la
tastatură.
program
eu;
var
n,i:integer;
function prim(x:integer):boolean;
var i:integer;
begin
prim:=true;
for i:=2 to trunc(sqrt(x)) do
if x mod i =0 then prim:=false;
end;
begin
write('n=');readln(n);
for i:=2 to n do
if prim(i) then write(i,' ');
readln;
end.
3. Să
se creeze un document care să aibă toate paginile într-un chenar cu
linie dublă. Paginile să fie numerotate în partea de jos, paginile
pare în stânga, iar paginile impare în dreapta.
1. Se dă o bază de
date numită FILME.DBF cu următoarea structură: titlu C(30),
regizor C(30), gen C(15), data_apar D(4), buget N(10). Realizaţi un
program într-un SGBD care să permită următoarele operaţii:
a) Ştergerea unei film;
b) Modificarea
informaţiilor despre un film;
c) Afişarea filmului cu
bugetul cel mai mare, a celui cel mai recent, a tuturor filmelor
aparţinând unui anumit gen dat de la tastatură.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
filme
browse
titlu1=space(30)
regizor1=space(30)
buget1=0
d={//}
gen1=space(15)
@
5,5 say 'Dati titlul :' get titlu1
@
6,5 say 'Dati regizorul:' get regizor1
@
7,5 say 'Dati genul:' get gen1
@
8,5 say 'Dati data:' get d
@
9,5 say 'Dati bugetul:' get buget1
read
append
blank
replace
titlu with titlu1, regizor with regizor1, gen with gen1, data_apar with d,
buget with buget1
browse
use
return
procedure
prog2
clear
use
filme
titlu1=space(30)
regizor1=space(30)
buget1=0
@
5,5 say 'Dati titlul :' get titlu1
@
6,5 say 'Dati regizorul:' get regizor1
@
7,5 say 'Dati bugetul:' get buget1
read
locate
for (titlu=titlu1) .or. (regizor=regizor1) .or. (buget=buget1)
if
found()
?
titlu,regizor
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog3
clear
use
filme
browse
titlu1=space(30)
@
5,5 say 'Dati filmul de stars:' get titlu1
read
locate
for titlu=titlu1
if
found()
dele
pack
?
'S-a sters '+titlu1
browse
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog4
clear
use
filme
browse
titlu1=space(30)
regizor1=space(30)
buget1=0
d={//}
gen1=space(15)
@
5,5 say 'Dati filmul de modificat:' get titlu1
@
6,5 say 'Dati regizorul:' get regizor1
@
7,5 say 'Dati genul:' get gen1
@
8,5 say 'Dati data:' get d
@
9,5 say 'Dati bugetul:' get buget1
read
locate
for titlu=titlu1
if
found()
replace
regizor with regizor1, gen with gen1, data_apar with d, buget with buget1
?
'Se gaseste!'
browse
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
filme
max=0
d={//}
do
while .not. eof()
if
buget> max
max=buget
endif
if
data_apar>d
d=data_apar
endif
skip
enddo
go
top
do
while .not. eof()
if
buget=max
?
titlu,buget
endif
if
data_apar=d
?
titlu,data_apar
endif
skip
enddo
go
top
gasit=.f.
accept
'Dati genul:' to gen1
do
while .not. eof()
if
gen=gen1
?
titlu,gen
gasit=.t.
endif
skip
enddo
if
gasit=.t.
?
'Se faseste!'
else
?
'Nu se gaseste!'
endif
use
return
2. Se citesc de la
tastatură un cuvânt şi o literă. Să se afişeze toate
cuvintele care se obţin prin înlocuirea unei litere din cuvânt cu litera
dată. (Exemplu: pentru c=’TOC’ şi l=’P’
se vor afişa ‘POC’,’TPC’,’TOP’).
program
nana;
var s,l:string;
c:char;
n,i:integer;
begin
write('s=');readln(s);
write('c=');readln(c);
for i:=1 to length(s) do begin
l:=s;
delete(l,i,1);
insert(c,l,i);
write(l,' ');
end;
readln;
end.
3. Să se creeze un
document WORD, cu numele Sub.doc, în folder-ul (dosarul) Atestat
(dacă dosarul nu există, se crează pe Desktop) în care: să
se scrie o strofă dintr-o poezie la alegere (minim 4 versuri) în care
să se folosească fonturi cu următoarele caracteristici:
dimensiune - 10 puncte; culoare font – roşu, culoare fond - galben; font -
arial; tip font - înclinat; aliniere orizontală: centrat; tipul de spaţiere
a liniilor: single; pentru documentul creat setaţi următorul tip de
pagină: dimensiune hârtie - A4, margini stânga - 3cm, dreapta - 2cm, sus -
2cm, jos - 2cm.
1. Se dă baza de date
ACTOR.DBF cu următoarea structură :
NUME C(30)
SEX C(1)
NRFILME N(3)
Baza de date se
consideră completă.
a)
Să se afişeze toţi actorii care au
jucat în mai mult de 10 filme;
b)
Să se afişeze toate actriţele
debutante (0 filme);
c)
Să se afişeze în ordine
descrescătoare a filmelor jucate actorii şi apoi actriţele.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
actor
list
off
go
top
list
for (nrfilme>10) .and. (sex='m') off
use
return
procedure
prog2
clear
use
actor
list
off
go
top
list
for (sex='f') .and. (nrfilme=0) off
use
return
procedure
prog3
clear
use
actor
browse
sort
to rez_15 on nrfilme/d for sex='m' fields nume,nrfilme
use
rez_15
browse
use
use
actor
go
top
sort
to rezu_15 on nrfilme/d for sex='f' fields nume,nrfilme
use
rezu_15
browse
close
all
return
2. Se consideră un
fişier text următoarea structură: nume, rom, mat, medie
(pe fiecare linie a fişierului se află datele despre un elev,
despărţite printr-un spaţiu). Să se tipărească
elevii în ordine descrescătoare după medie.
type
elev=record
nume:string[20];
rom,mat,med:real;
end;
vect=array[1..20] of elev;
var
v:vect;
n:integer;
procedure citire;
var f:text;
t,s:string;
e,i:integer;
begin
assign(f,'bac32.txt');
reset(f);
n:=0;
while not eof(f) do begin
readln(f,s);
i:=length(s);
while s[i]<>' '
do i:=i-1;
t:=copy(s,i+1,length(s)-i);
delete(s,i,length(s)-i+1);
n:=n+1;
val(t,v[n].med,e);
i:=length(s);
while s[i]<>' '
do i:=i-1;
t:=copy(s,i+1,length(s)-i);
delete(s,i,length(s)-i+1);
val(t,v[n].mat,e);
i:=length(s);
while s[i]<>' '
do i:=i-1;
t:=copy(s,i+1,length(s)-i);
delete(s,i,length(s)-i+1);
val(t,v[n].rom,e);
v[n].nume:=s;
end;
close(f);
end;
procedure ordonare;
var i,j:integer;
aux:elev;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if v[i].med<v[j].med then begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
end;
end;
procedure afisare;
var i:integer;
begin
for i:=1 to n do
writeln(v[i].nume,v[i].med:30:2);
end;
begin
citire;
ordonare;
afisare;
end.
3. Să se creeze o
pagină ce conţine titlul unei lucrări. Titlul va fi scris cu
caractere majuscule de 20 inchi, umbrit şi înclinat, folosind culoarea
albastră. Numele elevului va fi scris în partea dreaptă, jos. Textul
lucrării să se scrie pe două coloane. Să se numeroteze
lucrarea, prima pagină nu este numerotată. Să se adauge la
lucrare un antet cu numele lucrării care nu apare şi pe prima
pagină.
1. Se dă o bază de
date numită MAGAZIN.DBF cu următoarea structură: nume
C(30), pret N(10), data_f D(8), pret N(10), cantitate N(5).
Realizaţi un program într-un SGBD care să permită
următoarele operaţii:
a) Introducerea de date noi prin intermediul unei machete, cu validări pentru date;
b) Afişarea tuturor
produselor în ordine descrescătoare după data fabricaţiei, apoi
crescător după preţ;
c) Calculul valori tuturor
produselor din baza de date.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
case opt=6
do prog6
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
magazin
nume1=space(30)
pret1=0
d={//}
cant=0
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati pretul:' get pret1 valid pret1>0 error 'Ati introdus date
gresite!'
@
7,5 say 'Dati data:' get d
@
8,5 say 'Dati cant:' get cant valid cant>0 error 'Ati intodus date gresite!'
read
append
blank
replace
nume with nume1, pret with pret1, data_f with d, cantitate with cant
use
return
procedure
prog2
clear
use
magazin
sort
to rez_7_8 on data_f/d
use
rez_7_8
browse
sort
to rezu_7_8 on pret/a
use
rezu_7_8
browse
close
all
return
procedure
prog3
clear
use
magazin
browse
s=0
do
while .not. eof()
s=s+pret*cantitate
skip
enddo
?
s
use
return
procedure
prog4
clear
use
magazin
nume1=space(30)
pret1=0
d={//}
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati pretul:' get pret1 valid pret1>0 error 'Ati introdus date
gresite!'
@
7,5 say 'Dati data:' get d
read
locate
for (nume=nume1).or. (pret=pret1) .or. (data_f=d)
if
found()
?
nume,pret
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
magazin
nume1=space(30)
@
5,5 say 'Dati produsul de sters:' get nume1
read
locate
for nume=nume1
if
found()
dele
pack
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog6
clear
use
magazin
nume1=space(30)
pret1=0
d={//}
cant=0
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati pretul:' get pret1 valid pret1>0 error 'Ati introdus date
gresite!'
@
7,5 say 'Dati data:' get d
@
8,5 say 'Dati cant:' get cant valid cant>0 error 'Ati intodus date gresite!'
read
locate
for nume=nume1
if
found()
replace
pret with pret1, data_f with d, cantitate with cant
else
?
'Nu se gaseste!'
endif
list
off
use
return
2. Se dau p+1
mulţimi de numere întregi între 0 şi 255. Să se verifice
dacă primele p mulţimi reprezintă o partiţie a
mulţimii finale.
var
v:array[1..50] of set of byte;
p,n,i,j,x:byte;
m:set of byte; ok:boolean;
begin
write('p=');readln(p);
for i:=1 to p+1 do begin
v[i]:=[];
write('n=');readln(n);
for j:=1 to n do begin
write('x=');readln(x);
v[j]:=v[j]+ [x];
end;
end;
ok:=true;
m:=[];
for i:=1 to p do
m:=m+v[i];
if m<>v[p+1] then ok:=false;
for i:=1 to n-1 do
for j:=i+1 to n do
if(v[i]*v[j]<>[]) then
ok:=false;
if
ok then write('partitie')
else write('nu e partitie');
readln;
end.
3. Să
se creeze un document care să conţină un tabel de un tip
predefinit cu cinci rânduri şi şapte coloane. Tabelul să
conţină următoarele informaţii: număr curent,
numele şi prenumele, înălţime (cm), greutate (kg), vârstă
(ani) pentru mai multe persoane. Să se sorteze tabelul
descrescător după vârstă, în cazul în care există mai multe
persoane cu aceeaşi vârstă, acestea să se sorteze alfabetic
după nume.
1. Se dă baza de date
PRODUSE.DBF. Se consideră datele introduse.
COD C(10)
DENUMIRE C(30)
CANTITATE N(5)
PREŢCUMP N(7)
PREŢVÂNZ N(7)
a)
Să se scrie un program care afişează
într-o fereastră, produsele a căror cantitate este mai mare decât 0;
b)
Să se efectueze o vânzare a unui produs,
cerându-se codul produsului;
c)
Să se listeze valoarea stocului la preţ de
cumpărare şi la preţ de vânzare.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
produse19
browse
define
wind fer1 from 5,5 to 30,30 title 'Afis produse' double close grow float zoom
acti
wind fer1
list
fields denumire for cantitate>0
wait
" "
deactivate
wind fer1
use
return
procedure
prog2
clear
use
produse19
browse
accept
'Dati codul:' to cod1
locate
for cod=cod1
if
found()
dele
pack
?
'S-a efectuat o vanzare!'
browse
else
?
'Produsul nu se gaseste!'
endif
use
return
procedure
prog3
clear
use
produse19
s1=0
s2=0
do
while .not. eof()
s1=s1+cantitate*pretcump
s2=s2+cantitate*pretvanz
skip
enddo
browse
?
'Valoarea stocului la pretcump:',s1
?
'Valoarea stocului la pretvanz:',s2
use
return
2. Să se calculeze
produsul primilor n termeni ai
şirului lui Fibonacci definit astfel :f1=1, f2=1,
fn=fn-1+fn-2 pentru n>=3;
Exemplu: n=6, produsul este 240.
var
a,b,c,p,n,i:longint;
begin
write('n=');readln(n);
p:=1;
a:=1;
b:=1;
i:=3;
while
i<=n do begin
c:=a+b;
p:=p*c;
a:=b;
b:=c;
i:=i+1;
end;
write('p=',p);
readln;
end.
3. Să se creeze un
(dosar) folder ATESTAT pe una din partiţiile calculatorului şi
să i se prezinte proprietăţile sale. Să se realizeze un
antet şi să se scrie 5 rânduri de text cu dimensiunea caracterelor
15, aliniate la jumătatea paginii într-un document Word.
1. Se dă baza de date
MUNCITOR.DBF cu următoarea structură:
NUME C(30)
DATAN DATE(8)
SALARIU N(6)
Baza de date se
consideră corectă.
a)
Să se calculeze suma totală necesară
pentru plata muncitorilor;
b)
Să se afişeze toţi muncitorii cu un
salariu citit de la tastatură;
c)
Să se şteargă din baza de date
muncitorii care nu au salariul completat.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
muncitor22
browse
s=0
do
while .not. eof()
s=s+salariu
skip
enddo
?
s
use
return
procedure
prog2
clear
use
muncitor22
input
'Dati salariul:' to s
gasit=.f.
do
while .not. eof()
if
salariu=s
gasit=.t.
?
nume
endif
skip
enddo
if
gasit=.t.
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog3
clear
use
muncitor22
browse
dele
all for salariu=0
pack
browse
use
return
2. Să
se calculeze produsul a două numere naturale prin adunări repetate.
var
a,b,i,p:integer;
begin
write('a=');readln(a);
write('b=');readln(b);
p:=0;
i:=1;
while
i<=b do begin
p:=p+a;
i:=i+1;
end;
write(p,'
');
readln;
end.
3. Preluaţi un
text oarecare din Help-ul Word (minim 30 de rânduri) şi puneţi-l
într-un document word într-o pagină având formatul A4, pe 2 coloane,
aliniere justify, distanţa între rânduri double, începutul de paragraf la
2 cm de marginea din stânga. Să se insereze o imagine de tip .bmp în text
(care să apară în spatele textului).
1. Se dă o bază de
date numită CASETE.DBF cu următoarea structură: interpret C(25),
album C(25), pret N(6), data D(8), gen C (30).
Realizaţi un program într-un SGBD care să permită
următoarele operaţii:
a) Introducerea de date noi
prin intermediul unei machete, cu validări pentru date;
b) Afişarea tuturor
casetelor în ordine crescătoare după data apariţiei, apoi
alfabetic după interpret.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
casete
browse
interpret1=space(25)
album1=space(25)
pret1=0
d={//}
gen1=space(30)
@
5,5 say 'Dati interpretul :' get interpret1
@
6,5 say 'Dati albumul:' get album1
@
7,5 say 'Dati pretul:' get pret1
@
8,5 say 'Dati data:' get d
@
9,5 say 'Dati genul:' get gen1
read
append
blank
replace
interpret with interpret1, album with album1, pret with pret1, data with d, gen
with gen1
browse
use
return
procedure
prog2
clear
use
casete
sort
to rez_9_10 on data/a
use
rez_9_10
browse
sort
to rezu_9_10 on interpret/a
use
rezu_9_10
browse
close
all
return
procedure
prog3
clear
use
casete
interpret1=space(25)
album1=space(25)
gen1=space(30)
@
5,5 say 'Dati interpretul:' get interpret1
@
6,5 say 'Dati albumul:' get album1
@
7,5 say 'Dati genul:' get gen1
read
gasit=.f.
locate
for (interpret=interpret1) .or. (album=album1) .or. (gen=gen1)
if
found()
gasit=.t.
?
interpret,album
else
gasit=.f.
endif
if
gasit=.t.
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog4
clear
use
casete
browse
interpret1=space(25)
@
5,5 say 'Dati caseta de sters:' get interpret1
read
locate
for interpret=interpret1
if
found()
dele
pack
browse
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
casete
browse
interpret1=space(25)
album1=space(25)
pret1=0
d={//}
gen1=space(30)
@
5,5 say 'Dati interpretul pt modif:' get interpret1
@
6,5 say 'Dati albumul:' get album1
@
7,5 say 'Dati pretul:' get pret1
@
8,5 say 'Dati data:' get d
@
9,5 say 'Dati genul:' get gen1
read
locate
for interpret=interpret1
if
found()
replace
album with album1, pret with pret1, data with d, gen with gen1
browse
else
?
'Nu se gaseste!'
endif
use
return
2. Să se ordoneze
crescător un şir de n numere întregi folosind metoda
sortării prin numărare.
var
a,b,c:array[1..20] of integer;
n,i,j:integer;
begin
write('n=');readln(n);
for
i:=1 to n do begin
write('a[',i,']=');
readln(a[i]);
end;
for
i:=1 to n do b[i]:=0;
for
i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then b[i]:=b[i]+1
else b[j]:=b[j]+1;
for
i:=1 to n do c[b[i]+1]:=a[i];
for
i:=1 to n do write(c[i],' ');
readln;
end.
3. Cu ajutorul aplicaţiei Paint
să se deseneze şi coloreze o floare şi imaginea ei în
oglindă. Să se copieze imaginea creată încă de două
ori – o dată mărită şi o dată micşorată.
1. Se dă o bază de
date numită CASETE.DBF cu următoarea structură: interpret C(25),
album C(25), pret N(6), data D(8), gen C (30).
Realizaţi un program într-un SGBD care să permită
următoarele operaţii:
a) Căutarea unei casete
după interpret, numele albumului sau gen;
b) Ştergerea unei
casete;
c) Modificarea
informaţiilor despre o casetă.
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
casete
browse
interpret1=space(25)
album1=space(25)
pret1=0
d={//}
gen1=space(30)
@
5,5 say 'Dati interpretul :' get interpret1
@
6,5 say 'Dati albumul:' get album1
@
7,5 say 'Dati pretul:' get pret1
@
8,5 say 'Dati data:' get d
@
9,5 say 'Dati genul:' get gen1
read
append
blank
replace
interpret with interpret1, album with album1, pret with pret1, data with d, gen
with gen1
browse
use
return
procedure
prog2
clear
use
casete
sort
to rez_9_10 on data/a
use
rez_9_10
browse
sort
to rezu_9_10 on interpret/a
use
rezu_9_10
browse
close
all
return
procedure
prog3
clear
use
casete
interpret1=space(25)
album1=space(25)
gen1=space(30)
@
5,5 say 'Dati interpretul:' get interpret1
@
6,5 say 'Dati albumul:' get album1
@
7,5 say 'Dati genul:' get gen1
read
gasit=.f.
locate
for (interpret=interpret1) .or. (album=album1) .or. (gen=gen1)
if
found()
gasit=.t.
?
interpret,album
else
gasit=.f.
endif
if
gasit=.t.
?
'Se gaseste!'
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog4
clear
use
casete
browse
interpret1=space(25)
@
5,5 say 'Dati caseta de sters:' get interpret1
read
locate
for interpret=interpret1
if
found()
dele
pack
browse
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
casete
browse
interpret1=space(25)
album1=space(25)
pret1=0
d={//}
gen1=space(30)
@
5,5 say 'Dati interpretul pt modif:' get interpret1
@
6,5 say 'Dati albumul:' get album1
@
7,5 say 'Dati pretul:' get pret1
@
8,5 say 'Dati data:' get d
@
9,5 say 'Dati genul:' get gen1
read
locate
for interpret=interpret1
if
found()
replace
album with album1, pret with pret1, data with d, gen with gen1
browse
else
?
'Nu se gaseste!'
endif
use
return
2. Să se determine toate
permutările de n (n<15) elemente astfel încât elementele
de pe poziţiile impare să rămână neschimbate (1 pe
poziţia 1, 3 pe poziţia 3, etc).
program
oana;
type stiva=array[1..100] of integer;
var st:stiva;
n,k,i:integer;
as,ev:boolean;
procedure init(var st:stiva;k:integer);
begin
st[k]:=0;
end;
procedure succesor(var st:stiva;k:integer;var
as:boolean);
begin
if st[k]<n then begin
inc(st[k]);
as:=true;
end
else as:=false;
end;
procedure valid(st:stiva;k:integer;var
ev:boolean);
var i:integer;
begin
ev:=true;
for i:=1 to k-1 do
if st[k]=st[i] then ev:=false;
if (k mod 2 <>0 ) then
if st[k]<>k then ev:=false;
end;
function solutie(k:integer):boolean;
begin
solutie:=(k=n);
end;
procedure tipar(k:integer);
var i:integer;
begin
for i:=1 to k do
write(st[i],' ');
writeln;
end;
begin
write('n=');readln(n);
k:=1;
init(st,k);
while k>0 do begin
repeat
succesor(st,k,as);
if as then valid(st,k,ev)
until (not as) or (as and ev);
if as then
if solutie(k) then tipar(k)
else begin
inc(k);
init(st,k);
end
else dec(k);
end;
readln;
end.
3. Cu ajutorul aplicaţiei Paint
să se deseneze şi coloreze o casă şi imaginea ei în
oglindă. Să se transforme desenul într-un desen
alb-negru.
1. Se dă o bază de
date numită MAGAZIN.DBF cu următoarea structură: nume
C(30), pret N(10), data_f D(8), pret N(10), cantitate N(5).
Realizaţi un program într-un SGBD care să permită
următoarele operaţii:
a) Căutarea unui produs
după nume, data fabricaţiei sau pret;
b) Ştergerea unei
produs;
c) Modificarea
informaţiilor despre un produs;
set
talk off
clear
input
'Dati opt:' to opt
do
while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
case opt=6
do prog6
endcase
input 'Dati opt:' to opt
enddo
procedure
prog1
clear
use
magazin
nume1=space(30)
pret1=0
d={//}
cant=0
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati pretul:' get pret1 valid pret1>0 error 'Ati introdus date gresite!'
@
7,5 say 'Dati data:' get d
@
8,5 say 'Dati cant:' get cant valid cant>0 error 'Ati intodus date gresite!'
read
append
blank
replace
nume with nume1, pret with pret1, data_f with d, cantitate with cant
use
return
procedure
prog2
clear
use
magazin
sort
to rez_7_8 on data_f/d
use
rez_7_8
browse
sort
to rezu_7_8 on pret/a
use
rezu_7_8
browse
close
all
return
procedure
prog3
clear
use
magazin
browse
s=0
do
while .not. eof()
s=s+pret*cantitate
skip
enddo
?
s
use
return
procedure
prog4
clear
use
magazin
nume1=space(30)
pret1=0
d={//}
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati pretul:' get pret1 valid pret1>0 error 'Ati introdus date
gresite!'
@
7,5 say 'Dati data:' get d
read
locate
for (nume=nume1).or. (pret=pret1) .or. (data_f=d)
if
found()
?
nume,pret
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog5
clear
use
magazin
nume1=space(30)
@
5,5 say 'Dati produsul de sters:' get nume1
read
locate
for nume=nume1
if
found()
dele
pack
else
?
'Nu se gaseste!'
endif
use
return
procedure
prog6
clear
use
magazin
nume1=space(30)
pret1=0
d={//}
cant=0
@
5,5 say 'Dati numele:' get nume1
@
6,5 say 'Dati pretul:' get pret1 valid pret1>0 error 'Ati introdus date
gresite!'
@
7,5 say 'Dati data:' get d
@
8,5 say 'Dati cant:' get cant valid cant>0 error 'Ati intodus date gresite!'
read
locate
for nume=nume1
if
found()
replace
pret with pret1, data_f with d, cantitate with cant
else
?
'Nu se gaseste!'
endif
list
off
use
return
2. Să se scrie un program
care, pentru n valori întregi citite de la tastatură, afişează
valorile în ordine crescătoare.
program
oana;
var a:array[1..100] of integer;
n,i,j:integer;
aux:integer;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
end;
for i:=1 to n do write(a[i],' ');
readln;
end.
3. Creaţi
o pagină A4 cu marginile de 1.5 cm pe toate cele patru laturi care să
conţină în subsol textul a x-a pagină din y pagini ale
documentului, unde x reprezintă numărul paginii curente,
iar y numărul total de pagini din document.
1. Se dă baza de
date ELEV.DBF cu următoarea structură :
NUME C(30)
NOTA1 N(5,2)
NOTA2 N(5,2)
MEDIA N(5,2)
Baza de date se
consideră completă.
a) Să se
formeze o bază de date ADMISI.DBF care conţine câmpurile nume,
media, la fel ca în ELEVI.DBF cu elevii care au media >=5 şi o
bază de date RESPINSI.DBF care să conţină câmpurile nume,
media, la fel ca în ELEV.DBF, cu elevii care au media<5
b) Să se
listeze pe ecran în ordine descrescătoare a mediilor elevii admişi
şi în ordine alfabetică elevii respinşi.
set
talk off
use
elevo
clear
input
"dati optiunea" to opt
do while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
endcase
input "dati optiunea" to opt
enddo
procedure prog1
use elevo
clear
replace all media with (nota1+nota2)/2
use elevo in 1
use elevadm in 2
use elevres in 3
media1=0
nume1=space(30)
sele 1
do while .not. eof()
if media>=5
media1=media
nume1=nume
sele 2
append blank
replace media with media1,nume with nume1
else
media1=media
nume1=nume
sele 3
append blank
replace media with media1 ,nume with
nume1
endif
sele 1
skip
enddo
sele 1
browse
sele 2
browse
sele 3
browse
close all
return
procedure prog2
use elevadm
clear
sort to elevad on media/d fields nume
use elevad
browse
close all
use elevres
clear
sort to elevre on nume/a fields nume
use elevre
browse
close all
return
2. Aşezaţi n dame
pe o tablă de şah de dimensiune n x n (n<=10)
astfel încât să nu se atace.
Ex n=4 se va
afişa
2 4 1 3
3 1 4 2
program
alabala;
type
stiva= array [1..50] of integer;
var
v,st:stiva;
as,ev:boolean;
k,n,i,p,nr:integer;
procedure init ( var st:stiva;k:integer);
begin
st[k]:=0;
end;
procedure succesor ( var st:stiva; k:integer;
var as:boolean);
begin
if st[k]<n then
begin
st[k]:=st[k]+1;
as:=true;
end
else
as:=false;
end;
procedure valid ( st:stiva; k:integer; var
ev:boolean);
var i:integer;
begin
ev:=true;
for i:= 1 to k-1 do
if
(st[k] = st[i]) or (abs(st[k]-st[i])=k-i) then ev:=false;
end;
function solutie (k:integer):boolean;
begin
solutie:=(k=n);
end;
procedure tipar (st:stiva;k:integer);
var i,j:integer;
begin
nr:=nr+1;
for i:= 1 to k do
begin
for j:=1 to k do
if st[i]=j then write('R ')
else write('- ');
writeln;
end;
writeln;
end;
begin
write ('dati n=');readln(n);
k:=1;
init(st,k);
while k>0 do begin
repeat
succesor(st,k,as);
if as then valid (st,k,ev);
until (not as) or ( as and ev);
if as then
if solutie (k) then tipar(st,k)
else begin
k:= k+1;
init(st,k);
end
else k:=k-1;
end;
if nr=0 then write ('problema
nu are solutie')
else write ('pr
are',nr,'solutii');
readln;
end.
3. Să se redacteze un
document Microsoft Word de minimum 5 rânduri care să aibă
următoarele caracteristici: font Times New Roman cu dimensiunea de 10,
titlul de 12 Bold (aldin), scris la 1.5 rânduri, textul fiind subliniat cu
linie întreruptă; aliniament stânga-dreapta; să se insereze o
formă automată; marginile documentului să fie de: 1 cm stânga,
1.5 cm dreapta, 2 cm sus, 2.5 cm jos.
1. Se consideră baza de
date:
autor C(15), titlu
C(20), anapar N(4), editura C(15)
a)
Să se afişeze toate cărţile unei
edituri care au apărut într-un anumit an în ordine alfabetică
după autor şi în cadrul unui autor în ordine alfabetică a
titlurilor;
b)
Să se afişeze toţi autorii care au o
singură carte în bibliotecă.
set
talk off
use
cartica
clear
input
"dati opriunea" to opt
do while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
endcase
input "dati optiunea" to opt
enddo
procedure prog1
use cartica
clear
editura1=space(15)
an1=0
@ 10,5 say "dati editura: " get
editura1
@ 11,5 say "dati anul: " get an1
read
do while .not. eof()
if
(editura=editura1) .and. (anapar=an1)
sort
to carticica on autor/a titlu/a fields titlu,autor,editura
use
carticica
browse
use
endif
skip
enddo
close all
return
procedure prog2
clear
use
cartica
brow
use
return
2. Să
se scrie un program care afişează pe ecran conţinutul unui
fişier text cu nume citit de la tastatură.
3. Pregătiţi pentru
tipărire editorul word, astfel încât pagina de lucru să fie permanent
(la orice nouă sesiune) B5, marginile sus, jos, dreapta 2 cm iar stânga 3
cm, fontul New Times Roman, 12 pts, indentarea de paragraf la 1.5 cm .
Preluaţi un text oarecare din help-ul word şi aşezaţi-l în
pagină astfel încât să fi scris la 1.5 rânduri, fonturi arial de 12,
de culoare albastru, pe 3 coloane separate prin câte o linie.
1. Să se creeze baza de date PRODUSE.DBF cu următoarea
structură:
N,3 c,30 n,8 n,10
Să se scrie un program
care să realizeze:
a) Actualizarea bazei de
date: modificare şi adăugare;
b) Ordonarea alfabetic
după nume şi preţ
set
talk off
set
century on
set
date to french
use
produse33
define
menu m
define pad p1 of m prompt '\<adaugare'
define pad p2 of m prompt '\<modificare'
define pad p3 of m prompt '\<stergere'
define pad p4 of m prompt '\<ordonare'
define pad p5 of m prompt '\<iesire'
on sele pad p1 of m do adaugare
on sele pad p2 of m do modificare
on sele pad p3 of m do stergere
on sele pad p4 of m do ordonare
on sele pad p5 of m do iesire
activate menu m
procedure
adaugare
use
produse33
cod1=0
nume1=space(30)
cant1=0
pret1=0
@
1,1 say 'dati codul' get cod1
@
2,1 say 'dati nume' get nume1
@
3,1 say 'dati cantitate' get cant1
@
4,1 say 'dati pretul' get pret1
read
append
blank
replace
nume with nume1, cod with cod1, pret with pret1, cantitate with cant1
list
use
return
procedure
modificare
use
produse33
nume1=space(30)
@
1,1 say 'dati numele' get nume1
read
locate
for alltrim(nume)=alltrim(nume1)
if
found()
cod1=0
cant1=0
pret1=0
@ 2,1 say 'dati codul' get cod1
@ 3,1 say 'dati pretul' get pret1
@ 4,1 say 'dati cant' get cant1
read
replace
cod with cod1, pret with pret1, nume with nume1, cantitate with cant1
list
endif
clear
use
return
procedure
stergere
use
produse33
cod1=0
@
1,1 say 'dati codul' get cod1
read
locate
for cod=cod1
if found()
delete
pack
endif
list
use
return
procedure
ordonare
use
produse33
sort
to produ1 on nume/A fields cod,nume,cantitate,pret
list
use
produ1
sort
to produ2 on pret/A fields cod,nume,cantitate,pret
list
use
produ2
use
return
procedure
iesire
deactivate
menu
return
2. Să
se afişeze primele n numere care au suma cifrelor Łm
Exemplu:
n=10, m=4: 1, 2, 3, 4, 10, 11, 12, 13, 20, 21.
var
n,m,c,x,s,i,j:integer;
begin
write('n=');readln(n);
write('m=');readln(m);
j:=1;
i:=1;
while
i<=n do begin
s:=0;
x:=j;
repeat
c:=x mod 10;
s:=s+c;
x:=x div 10;
until x=0;
if s<=m then begin
write(j,' ');
i:=i+1;
end;
j:=j+1;
end;
readln;
end.
3. Folosind programul Excel,
creaţi un tabel cu 5 coloane, în care ultima coloană să
calculeze media aritmetică a valorilor introduse în primele patru coloane.
Să se ordoneze tabelul în funcţie de valoarea calculată.
1. Să se creeze baza de date PROFESORI.DBF cu următoarea structură:
N,3 c,30 n,2 c,15 L c,3
Să se scrie un program
care să realizeze:
a) Actualizarea bazei de
date: adăugare şi modificare;
b)Să listeze toţi
profesorii diriginţi.
c) Să ordoneze
toţi profesorii alfabetic după nume, după cod şi respectiv
după clasă.
2. Realizaţi un program
care calculează recursiv maximul a n numere citite de la
tastatură (n< 20, numerele sunt naturale de cel mult 5 cifre).
var
n,max,i:integer;
a:array[1..20] of integer;
function maxim(i:integer;var
max:integer):integer;
begin
if i=0 then maxim:=max
else begin
if a[i]>max then max:=a[i];
maxim:=maxim(i-1,max);
end;
end;
begin
write('n=');readln(n);
for
i:=1 to n do begin
write('a[',i,']=');
readln(a[i]);
end;
max:=0;
writeln(maxim(n,max));
readln;
end.
3. Să se creeze o
scurtătură pe desktop pentru limbajul Pascal. Să se creeze un
document Word ce conţine o pagină cu titlul unei lucrări. Titlul
va fi scris cu caractere majuscule de 20 inchi, umbrit, albastru, îngroşat.
1. Să se creeze baza de date ELEVI.DBF cu următoarea
structură:
cod nume prenume
mat
rom medie
n,3 c,30 c,30 n,5,2 n,5,2 n,5,2
Să se scrie un program
care realizează:
a) Listarea elevilor cu nota
10 la matematică, limba română, cu media 10, respectiv elevii
corigenţi.
b) Ordonarea alfabetică
elevii din baza de date după nume, respectiv medie.
2. Se citeşte de la
tastatură o matrice n x m şi calculaţi pentru
fiecare coloană numărul de numere neprime.
Exemplu:
n=3 m=4
2 5 7 5
1 4 7 0
2 4 5 6
se va afisa
1 2 0 2
var
a:array[1..20,1..20] of integer;
m,n,i,j,p:integer;
ok:boolean;
function prim(x:integer):boolean;
var i:integer;
ok:boolean;
begin
ok:=true;
for i:=2 to x div 2 do
if x mod i=0 then ok:=false;
prim:=ok;
end;
begin
write('n=');readln(n);
write('m=');readln(m);
for
i:=1 to n do
for j:=1 to m do begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
for
j:=1 to m do begin
p:=0;
for i:=1 to n do
if not prim(a[i,j]) then
p:=p+1;
write(p,' ');
end;
readln;
end.
3. În programul Explorer
creaţi două foldere (dosare). Într-unul din ele creaţi două
fişiere text.. Realizaţi operaţiile de copiere (dintr-un folder
în altul), ştergere, redenumire, mutare (dintr-un folder în altul) a
fişierelor.
1. Să se creeze baza de date SALARIAŢI.DBF cu următoarea
structură:
cod nume data_naşterii vechime
categoria salariu căsătorit nr_copii
N,3 c,30 D n,2 n,1 n,10 L n,2
Să se creeze un program
cu următoarele cerinţe:
a) Actualizarea bazei de
date: adăugare şi modificare
b) Să se listeze
toţi salariaţi căsătoriţi.
c) Să se ordoneze
alfabetic toţi salariaţii după nume, vârstă, şi
numărul copiilor.
set
talk off
use
salariati
define
wind f from 5,5 to 21,79
define
wind w from 0,0 to 24,79
define
menu m
define
pad p1 of m prompt '\<adaugare'
define
pad p2 of m prompt '\<modificare'
define
pad p3 of m prompt '\<listare'
define
pad p4 of m prompt '\<ordonare'
define
pad p5 of m prompt '\<iesire'
on
sele pad p1 of m do adaugare
on
sele pad p2 of m do modificare
on
sele pad p3 of m do listare
on
sele pad p4 of m do ordonare
on
sele pad p5 of m cancel
activate
wind w
activate
menu m
return
procedure
adaugare
activate
wind f
store
0 to c,v,cat,sal,cop
n=space(30)
cas=.F.
d={\\}
@
1,1 say 'dati numele' get n
@
2,1 say 'dati codul' get c
@
3,1 say 'dati vechimea' get v
@
4,1 say 'dati data nasterii' get d
@
5,1 say 'dati categoria' get cat
@
6,1 say 'dati salariu' get sal
@
7,1 say 'este casatorit(T/F)' get cas
@
8,1 say 'nr copii este' get cop
read
append
blank
replace
cod with c,nume with n,data_n with d;
vechime
with v,categoria with cat,salariu with sal;
casatorit
with cas,nr_copii with cop
clear
deactivate
wind f
return
procedure
modificare
activate wind f
store 0 to c,v,cat,sal,cop
n=space(30)
cas=.F.
d={\\}
@
1,1 say 'dati codul' get c
read
locate
for cod=c
if
found()
@
2,1 say 'dati numele' get n
@
3,1 say 'dati vechimea' get v
@
4,1 say 'dati data nasterii' get d
@
5,1 say 'dati categoria' get cat
@
6,1 say 'dati salariu' get sal
@
7,1 say 'este casatorit(T/F)' get cas
@
8,1 say 'nr copii este' get cop
read
replace
nume with n,data_n with d;
vechime
with v,categoria with cat,salariu with sal;
casatorit
with cas,nr_copii with cop
endif
clear
deactivate
wind f
return
procedure
listare
activate
wind f
display
all off for casatorit=.T.
wait
wind
clear
deactivate
wind f
return
procedure
ordonare
activate
wind f
sort
to temp on nume,data_n,nr_copii
close
data
use
temp
display
all off
wait
wind
clear
deactivate
wind f
return
2. Se citeşte de la
tastatură o matrice de dimensiune n x n. Spuneţi
dacă există în matrice două linii sau două coloane gemene (două linii sunt gemene dacă
au aceleaşi elemente, eventual în altă ordine)
Exemplu:
n=3
1 2 1
4 5 6
2 1 1
Liniile 1 şi 3 sunt
gemene
var
a,b:array[1..20,1..20] of integer;
n,i,k,l,m,j:integer;
procedure
citire;
begin
write('n=');readln(n);
for
i:=1 to n do
for
j:=1 to n do begin
write('a[',i,',',j,']=');readln(a[i,j]);
end;
end;
procedure
ordonare_linii(i:integer);
var
aux,r,t:integer;ok:boolean;
begin
repeat
ok:=true;
for
r:=1 to n-1 do
if a[i,r]>a[i,r+1] then begin
aux:=a[i,r];
a[i,r]:=a[i,r+1];
a[i,r+1]:=aux;
ok:=false;
end;
until
ok;
end;
procedure
ordonare_coloane(i:integer);
var
aux,r,t:integer;ok:boolean;
begin
repeat
ok:=true;
for
r:=1 to n-1 do
if a[r,i]>a[r+1,i] then begin
aux:=a[r,i];
a[r,i]:=a[r+1,i];
a[r+1,i]:=aux;
ok:=false;
end;
until
ok;
end;
function
verificare_linii(i,j:integer):boolean;
var
b,l:integer;
begin
verificare_linii:=true;
for
k:=1 to n do
if a[i,k]<>a[j,k] then
verificare_linii:=false;
end;
function
verificare_coloane(i,j:integer):boolean;
var
b,l:integer; ok:boolean;
begin
ok:=true;
for
k:=1 to n do
if
a[k,i]<>a[k,j] then ok:=false;
verificare_coloane:=ok;
end;
begin
citire;
b:=a;
for
i:=1 to n do
ordonare_linii(i);
for
i:=1 to n-1 do
for j:=i+1 to n do
if verificare_linii(i,j) then
writeln('liniile gemene',i,'si',j);
a:=b;
for
i:=1 to n do
ordonare_coloane(i);
for
i:=1 to n-1 do
for j:=i+1 to n do
if verificare_coloane(i,j) then
writeln('coloane gemene',i,'si',j);
readln;
end.
3. Preluaţi fragmente de
text din help-ul din word. Formataţi-l astfel: pagina A4, pe
lăţime, marginile 1.5 cm peste tot; 3 coloane de text, la un
rănd cu linie despărţitoare între ele; să se insereze 3
desene în text, câte unul pe fiecare coloană.
1. Să se creeze baza de
date ELEVI.DBF cu următoarea structură:
cod nume prenume
mat rom
med
n(3) c(30) c(30)
n(5,2) n(5,2) n(5,2)
a)
Să se modifice datele unui elev identificat
prin cod;
b)
Să se listeze elevii promovaţi
descrescător după medie, apoi alfabetic după nume (la egalitate
de medii);
c)
Să se listeze alfabetic după nume şi
prenume toţi elevii nepromovaţi.
set
talk off
use
elevut
clear
input
"dati optiunea" to opt
do while opt<>0
do case
case opt=1
do prog1
case opt=2
do prog2
case opt=3
do prog3
case opt=4
do prog4
case opt=5
do prog5
case opt=6
do prog6
endcase
input "dati optiunea" to opt
enddo
procedure prog1
use elevut
clear
cod1=0
nume1=space(30)
prenume1=space(30)
mat1=0
rom1=0
@ 1,1 say 'dati cod' get cod1 valid cod1>0
error "EROARE!"
@ 2,1 say 'dati numele' get nume1 valid
nume1<>" " error "EROARE!"
@ 3,1 say 'dati prenumele' get prenume1 valid
prenume1<>" " error "EROARE!"
@ 4,1 say 'dati mate' get mat1 valid
mat1>0 error "EROARE!"
@ 5,1 say 'dati romana' get rom1 valid
rom1>0 error "EROARE!"
read
append blank
replace cod with cod1,nume with nume1,prenume
with prenume1,mat with mat1,rom with rom1
use
return
procedure prog2
use elevut
clear
replace all media with (mat+rom)/2
list all
use
return
procedure prog3
use elevut
clear
nume1=space(30)
prenume1=space(30)
@ 1,1 say 'dati nume' get nume1
@ 2,1 say 'dati prenume' get prenume1
read
locate for (nume=nume1) .and.
(prenume=prenume1)
if found()
delete
pack
endif
list all
use
return
procedure prog4
use elevut
clear
cod1=0
@ 1,1 say 'dati cod' get cod1
read
locate for cod=cod1
if found()
nume1=space(30)
prenume1=space(30)
mat1=0
rom1=0
@ 1,1 say 'dati nume' get nume1
@ 2,1 say 'dati prenume' get prenume1
@ 3,1 say ' dati mate' get mat1
@ 4,1 say 'dati romana' get rom1
read
append blank
replace nume with nume1,prenume with
prenume1,mat with mat1,rom with rom1
list all
endif
use
return
procedure prog5
use elevut
clear
sort
to elevit on media/d,nume/ac for media>=5 fields cod,nume,prenume,media
use
elevit
browse
close
all
return
procedure prog6
use elevut
clear
sort to elevnep on nume/a, prenume/a for media<5 fields cod,
nume,prenume,mat,rom,media
use elevnep
browse
use
close all
return
2. Se citeşte de la
tastatură un număr de cel mult 9 cifre (natural). Se citeşte un k
(0<k<9). Afişaţi numărul obţinut prin rotirea
spre stânga a k poziţii.
Exemplu:
n=2944532
k=3
Se va afişa
5322944
var
n:longint;
k:byte;
t,s:string;
begin
write('n=');readln(n);
write('k=');readln(k);
str(n,s);
t:=copy(s,length(s)-k+1,k);
delete(s,length(s)-k+1,k);
insert(t,s,1);
write(s);
readln;
end.
3. Preluaţi o
secvenţă de text din Help-ul Windows. Formataţi acest text
astfel: pagina A4 portrait, toate marginile de 2 cm; titlul INCERCARE, corp 32
Times New Roman bold, subliniat cu două linii; textul pe două coloane
cu linie despărţitoare între ele; 3 zone de text, a câte 5 rânduri,
vor fi marcate cu fond gri.
1. Să se creeze baza de date ELEVI.DBF cu următoarea
structură:
cod nume prenume mat
rom med
n,3 c,30 c,30
n,5,2 n,5,2 n,5,2
Să se creeze un program
cu următoarele opţiuni:
a) Actualizarea bazei de
date: adăugări şi modificări;
b) Listări din baza de date:
elevii promovaţi, alfabetic după nume.
2. Să se genereze toate
submulţimile de p elemente ale mulţimii {1,2,…,n}.
3. În cadrul unei pagini de
document word, format A4 portret, realizaţi un tabel în care
introduceţi numele a 10 persoane, vârsta, înălţimea, greutatea.
Aranjaţi tabelul descrescător după vârstă şi în cadrul
aceleiaşi vârste, crescător după înălţime. Tabelul va
avea pe prima coloană un număr curent generat automat, marginile
duble şi liniile din interior simple. Celulele din antetul tabelului vor
avea fondul verde.
1. Să se creeze baza de date PRODUSE.DBF cu următoarea
structură:
N,3 c,30 n,8 n,10
Să se creeze un program
cu următoarele opţiuni:
a) Actualizarea bazei de
date: adăugare şi modificare;
b) Să ordoneze
alfabetic după nume produsele, după cantitate şi respectiv
după preţ.
2. Se dau două numere
naturale a si b citite de la tastatură, a de cel mult 9
cifre, b<=10. Afişaţi numărul a în baza b.
Exemplu:
a=18
b=2
Se va afişa 10010
var
a,b,r,i,n:integer;
x:array[1..20] of integer;
begin
write('a=');readln(a);
write('b=');readln(b);
n:=0;
repeat
r:=a mod b;
a:=a div b;
n:=n+1;
x[n]:=r;
until
a=0;
for
i:=n downto 1 do write(x[i], ' ');
readln;
end.
3. Să se seteze mouse-ul
astfel încât să poată fi folosit de către un stângaci şi
să se seteze tastatura pentru editarea în limba română.
1.
Fie
baza de date TELEFOANE (nume, telefon, adresa). Se citeşte de la
intrare numele unui abonat. Se cere să se afişeze telefonul şi
adresa la toţi abonaţi care au acelaşi nume cu cel citit de la
intrare.
2. Se citeşte de la
tastatură numărul n. Generaţi în fişierul atestat.out
primele n numere prime, câte 10 pe fiecare linie.
Exemplu:
N=40
atestat.out
2 3 5 7 11 13 17 19 23 29
31 37
var
n,i,k,l:integer;
f:text;
function prim(x:integer):boolean;
var j:integer;
begin
prim:=true;
for j:=2 to trunc(sqrt(x)) do
if x mod j=0 then prim:=false;
end;
begin
write('n=');readln(n);
assign(f,'bac.out');
rewrite(f);
k:=0;
l:=1;
while
k<n do begin
l:=l+1;
if prim(l) then begin
write(f,l,' ');
inc(k);
if k mod 10=0 then
writeln(f);
end;
end;
close(f);
end.
3. preluaţi
din help-ul word 20 rânduri de text
şi aşezaţi-le într-o pagină de word format A4 pe lungime cu
margini egale peste tot (2cm). Formataţi textul astfel: aliniere şi
la stânga şi la dreapta; distanţa dintre rânduri Single; paragrafe la
1.5 cm; corp de literă 12, Arial, italic. Inseraţi în document o
captură de ecran. Salvaţi cu parolă.
BILET 40
-
lista claselor;
-
primii trei elevi şi
ultimii trei elevi în ordinea mediilor din clasă.
2. Să se testeze dacă
un vector cu n elemente poate reprezenta o mulţime (în sens
matematic).
var
x:array[1..20] of integer;
n,i,j:integer;
ok:boolean;
begin
write('n=');readln(n);
for
i:=1 to n do begin
write('x[',i,']=');
readln(x[i]);
end;
ok:=true;
for
i:=1 to n-1 do
for j:=i+1 to n do
if x[i]=x[j] then ok:=false;
if
ok then write('da')
else write('nu');
readln;
end.
3. Să se creeze în procesorul de texte WORD un tabel ce
conţine numele mai multor elevi şi notele la atestat şi apoi
să se sorteze în ordine descrescătoare după note şi în
ordine alfabetica după nume. Tabelul va avea antetul scris cu caractere de 14, bold (aldin), iar
informaţiile din tabel vor fi scrise cu caractere de 12, obişnuit.