BILET 1

1. Se dă o bază de date STOC.DBF cu structura: CODP, DENP,  U_M PRET_UNIT, CANTITATE, cu semnificaţia:

-         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.

BILET 2

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.

BILET 3

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:

atestat.in

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ă.

BILET 4

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.

BILET 5

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.

BILET 6

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.

BILET 7

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.

BILET 8

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ă.

BILET 9

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.

BILET 12

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.

BILET 13

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.

BILET 14

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.

BILET 15

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.

BILET 17

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.

BILET 18

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.

BILET 19

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.

BILET 20

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.

BILET 21

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.

BILET 22

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.

BILET 23

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ă.

BILET 24

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.

BILET 25

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.

Bilet 26

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).

 

BILET 27

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ă.

BILET 28

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.

BILET 29

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.

BILET 30

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.

BILET 31

1. Se consideră baza de date:

CARŢI.DBF

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.

BILET 32

1. Să se creeze baza de date PRODUSE.DBF cu următoarea structură:

Cod                 nume                    cant             preţ

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ă.

BILET 33

1. Să se creeze baza de date PROFESORI.DBF cu următoarea structură:

Cod                 nume                    vechime       specialitate             diriginte       clasă

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.

 

BILET 34

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.

BILET 35

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ă.

BILET 36

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.

BILET 37

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.

 

BILET 38

1. Să se creeze baza de date PRODUSE.DBF cu următoarea structură:

Cod                 nume                    cantitate                preţ

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ă.

BILET 39

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

1. Pentru baza de date ELEVI (nume, prenume, clasa, medie) să se afiseze:

-         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.