Sunteți pe pagina 1din 14

Întrebări pentru examenul

la Informatică

1. Variabile dinamice. Declararea, operațiile asupra variabilelor dinamice.


Modul de prelucrare a valorilor variabilelor dinamice.

Notiune-Variabilele care sint create si eventual distruse in timpul executiai


programului se numesc variabile dinamice.
Declarare- type Tr = ^Tb (tipul referinta si tipul de baza)(adresainteger=^integer)
Operatii-> = si < >(cu valorile unui tip de date referinta);(asupra variabelelor
dinamice se poate efectua toate operatiile a admise de tipul de baza)
Ex:i^:=1;j^:=2;k^:=i^+j^;
Modul de prelucrare :
Crearea-> se realizeaza cu procedura predefinita new(),apelul->new(p),unde
p este o variabila de referinta
Deraperare-> ex:new(i);i^:=1(variabilei create i se atribue 1)(daca atribuim 0
ne va da eroare)
Distrugerea->distrugerea si eliberarea zonei respective de memorie cu
proceduara dispose():apelul -> dispose(p);

2. Caracterizaţi structurile statice şi structurile dinamice de date. Numărul


componentelor, accesul la componentele structurii.

Structuri statice de date->tablou,sir de caractere,articole,multimi,fisiere.(pt ca


structura lor nu se modifica in timpul executiei)
Variabilele pot fi statice sau dinamice. Cele statice au o zonă de memorie bine
definită. Structura, locul, tipul acestei zone nu poate fi schimbată în procesul
execuţiei programului. Accesul la variabilele statice se face direct, după nume.
Structurile statice de date au un număr fix de elemente, care nu poate fi modificat.
Alocarea memoriei se face într-un spaţiu strict determinat al memoriei, care permite
adresarea directă
Structuri dinamice de date->liste unidirectionale,liste biderictionale,stive,cozi,arbori.
Pentru acest tip de variabile poate fi modificat volumul de memorie rezervat, ceea
ce face mai flexibilă alocarea memoriei în procesul de lucru al programului.
Structurile dinamice pot acumula elemente în procesul de funcţionare al
programului, sau pot lichida elementele ce au devenit neutilizabile. Accesul la
aceste variabile şi declararea lor se face în mod diferit de cel al variabilelor statice.
Accesarea (definirea) este indirectă, prin intermediul unui tip mediator de variabile –
tipul referinţă. Pentru variabilele tip referinţă se alocă un spaţiu de memorie de 4
octeţi, care conţin adresa variabilei dinamice. Memoria pentru variabilele dinamice
se alocă dintr-o zonă specială, care foloseşte adresarea indirectă, numită heap.
Ac5eastă zonă este diferită de zona pentru variabilele statice.
Variabilele dinamice ocupă un spaţiu de memorie în corespundere cu tipul
lor: Integer, real, string etc.
3. Explicaţi structura dinamică de date listă unidirecţională. Declararea
structurii și a variabilelor. Procedurile de creare şi afişare a unei liste.

Structura->Liste uniderectionale sint structure explicite si dinamice de date formate


de cellule.Fiecare celula este o variabila dinamica de tipul record ce contine dou
cimpuri:cimpul datelor si cimpul legaturilor.Logica creării unei liste (este cea mai
simplă structură) e următoarea: pentru fiecare element al listei vom avea nevoie de
spaţiu pentru el însuşi şi de spaţiu pentru adresa elementului următor al listei
Declararea structurii si a variabelelor;
Type adresacelula=^celula;
Celula=record
Info:string;
Urm:adresacelula;
End;
Var p:adresacelula;

Crearea si afisarea:
Type adresacelula=^celula;
Celula=record
Info:string;
Urm:adresacelula;
End;
Var p,r,q:adresacelula;
S:string;
I:integer;
Procedure creare;
Begin
P:=nil;
Write(‘s=’);
Readln(s);
New(r);
R^.info:=s;
R^.urm:=nil;
P:=r;
Q:=r;
Write(s);
While not eof do
Begin
Readln(s);
Write(‘s’);
New(r);
R^.info:=s;
R^.urm:=nil;
Q^.urm:=r;
Q:=r;
End;
End;
Procedure afisare;
Begin
R:=p;
While r<>nil do
Begin
Writeln(r^.info);
R:=r.urm;
End;
End;
Begin
Creare;
Afisare;
End.

4. Operaţii în cadrul listelor unidirecţionale.


Operatii->
Parcurgerea si prelucrarea
Cautare
Includere
Excludere

5. Explicaţi structura dinamică de date stiva. Introducerea, extragerea unui


element, afişarea stivei.

Definite->stiva este o lista uniderictionala cu proprietata ca operatiile de


introducere si extragere se fac la un singur capat al ei.Ultimul element introdus este
virful listei.Crearea si preucrarea:
Type adresacelula=^celula;
Celula=record
Info:string;
pred:adresacelula;
End;
Var s:adresacelula;

Introducerea:
New(r);
R^.pred:=s;
S:=r;

Extragerea:
R:=s;
S:=s^.pred;
Dispose(r);

Afisare:
Procedure afisare;
Var r:adresacelula;
Begin
If s=nil
Then writeln(‚Stiva este vida’)
Else begin
Writeln(‚Stiva include elementele’)’
R:=s;
While r<>nil do begin
Writeln(r^.info);
R:=r^.pred;
End;
endl
6. Explicaţi structura dinamică de date coada. Introducerea, extragerea unui
element, afişarea cozii.

Coada este o lista unidirectionala in care toate introducirile se efectueaza la ununl din
capre ,iar extragerea la celalt capat.
Datele pentru crearea si prelucrarea cozii;
Type adresacelula=^celula;
Celula=record
Info:string;
Urm:adresacelula;
End;
Var p,u:adresacelula;

Introducerea:
New(r);
R^.urm:=nil;
U^.urm:=r
U:=r;

Extragerea:
R:=p;
P:=p^.urm;
Dispose(r);

Afisarea:
Procedure afisare;
Var r:adresacelula;
Begin
If p=nil then writeln(‚coda este vida’)
Else begin
Write(‚coada include elementele’);
R:=p;
While
Writeln(r^.info);
R:=r^.urm;
End;
End;

7. Explicaţi structura dinamică de date arbore binar. Algoritmul iterativ şi


recursiv de creare a unui arbore.

Definitie:
• Nod –o variabila dinamica de tipul record care contine cimp destinat memorarii
informatiei utile si doi indicatori de adresa
• Un nod este un arbore binary
• Un nod ce contine legaturi catre alti doi arbori binary este un arbore binar
• Un arbore binar este un arbore orientat cu proprietatea că pentru orice virf cei doi
descendenţi sînt desemnaţi ca descendent stîng respectiv descendent drept (fiu
dreapta.

Algoritm iterativ:
-se creaza nodul radacina
-nodul-radacina se introduce intr-o coada
-pntru fiecare nod exttras din coada se creeaza daca exista descdentul sting si
descendentul drept;
-nodurile nou-create se introduc in coada
-procesul de construire a arborelui se inchee cind coada devine vida

Algoritm recursiv
-se creeaza nodul-radacina;
-se construeste subarborele sting
-se construeste subarborele drept;

8. Explicaţi metodele de parcurgere a arborilor binari. Daţi exemple.


Parcurgerea in preordine ->RSD
-se viziteaza radacina
-se traverseaza subarborele sting
-se traverseaza subarborele drept
Parcurgerea in inordine ->SRD
-se traverseaza subarborele sting
-se viziteaza radacina
-se traversaza subarborele drept
Parcurgerea in postordine ->SDR
-se traverseaza subarborele stng
-subarborele drept;
-radacina

9. Arbori binari de căutare - sortare. Ce operaţii pot fi executate asupra unui


arbore binar de căutare? Cum se execută aceste operaţii?

Arbore binar de cautare-un arbore binar in care cheia oricarui nod este mai mare
decit cheile nodurilor din subarborele sting si mai mica decit toate chile nodurilor
din subarborele drept.De aici rezulta ca daca parcurgem un arbore binar de cautare
prin SRD se va ranha nodurile in ordine crescatoare.
Operatii:
Catarea si inserearea unui nod
Cautarea -usor se realizeaza prin recursie.
Daca radacina contine cheia necesara,cautarea se opreste aici
Daca nu,atunci in functie de rezultatul compararii cheilor respective cautare
contrinua in subarborele sting sau drep.
Inserarea:
-daca arborele eset vid ,el se subtitue cu nodul care urmeaza sa fie inserat
-daca nu este vid,in functie derezultatul compararii cheilor respective ,inserarea se
face in subarborele sting sau cel drept.

10. Explicaţi structura generală a algoritmilor bazaţi pe metoda trierii.


Complexitatea metodei.
Aceasta metoda identifica toate solutiile unei probleme in depentenda de multimea
solutiilor posibile,adica metoda trierii presupune ca solutia unei probleme poate fi
gasita analizind consecutiv elementele si ale unei multimi finite.
Schema generala
For i:=i to n do
If solutieposibila(si) then prelucrarea solutiei(si)
Complexitatea
Complexitatea temporala a acestor algoritmi este determinata de numarul de
elemente k din multimea solutiilor posibile S.Aceasta metoda este incapabila in
cazul datelor de intrare foarte mari,astfel ca este aplicata numai pentru elaborarea
unor programe al caror timp de executie nu este critic.

11.Explicaţi structura generală a algoritmilor bazaţi pe metoda GREEDY.


Complexitatea metodei.
Algoritmii greedy sunt in general simpli si sunt folositi la probleme de optimizare, cum ar
fi: sa se gaseasca cea mai buna ordine de executare a unor lucrari pe calculator, sa se
gaseasca cel mai scurt drum intr-un graf etc. Aceasta metoda propune o strategie de
rezolvare a problemelor de optim în care se poate obţine
optimul global prin alegeri succesive ale optimului local, ceea ce permite rezolvarea
problemei fără nici o revenire la deciziile luate deja.

Schema generala:
While existaelement do
Begin
Alegeunelement(x);
Includeelementul(x);
End.

Complexistate:
Complexitate generala a acestei metode poate fi evaluate urmind schema generala de de
calcul.De obicei timpul cerut de procedurile din schema generala este de ordinal n.In
component ciclului while aceste procedure se executa de cel mult n ori.Astfel metoda
greedy poate fi aplicata numai atunci cind din enuntul problemei poate fi dedus regula care
asigura selectia directa a elementelor necesare din multimea A.

12. Explicaţi structura generală a algoritmilor bazaţi pe metoda reluării.


Complexitatea metodei.
In metoda reluarii se presupune ca solutia problemei pe care trebue sa o rezolvam poate fi
reprezentata printr-un vector:v=(v1,v2....vn).fiecare componenta Vk a vectorului V poate
lua valori dintro anuma multime Ak,k=1,2...n.
Schema generla:
Begin
If k<=n then
Begin
X[k]:=primulelement(k);
If continuare(k) then reluare(k+1);
While existascucesor(k) do
Begin
X[k]:=succesor(k);
If continuare(k) then reluare(k+1)
End;
End;
Else
Prelucraresolutie;
End;

Complexitatea:
..temporala a algoritmilor bazati pe metoda descisa mai sus este ca si in cazul trierii
,o(mn),m=max(m1,m2...mn)
13. Explicaţi structura generală a algoritmilor bazaţi pe metoda desparte şi
stăpânește. Complexitatea metodei.

Divide et impera este o tehnica de elaborare a algoritmilor care consta in:


· Descompunerea cazului ce trebuie rezolvat intr-un numar de subcazuri mai mici ale
aceleiasi probleme.
· Rezolvarea succesiva si independenta a fiecaruia din aceste subcazuri.
· Recompunerea subsolutiilor astfel obtinute pentru a gasi solutia cazului initial.
Schema generala:
Procedure despartesistapineste(I,j:integer; var x:tip);
Var m:integer;
X1,x2:tip;
Begin
If solutiedirecta(i,j) then prelucrare(i,j,x)
Else
Begin
M:=(j-1) div 2;
Despartesistapineste(i,i+m,x1)
DEspartesistapineste(i+m+1,j,x2)

Complexitattea:
Temporala depinde de numarul de subprobleme k in care este divizata problema curenta
si de complexitatea algoritmilor destinati rezolvarii directe a subproblemelor
respective.Programale elaborate in baza acestei metode sunt simple si au timpul de executie
mic.Cu regret aceasta tehnica poate fi apliata numai atunci cind prelucrarea ceruta admite
divizarea problemei curente in subprobleme de dimensiuni mai mici.

14. Explicaţi schema de calcul a metodei ramifică şi mărgineşte.

15. Cum poate fi realizată metoda trierii cu ajutorul ciclurilor while şi repeat?
While
I:=1;
While i<> n do begin
If solutieposibila(si) then prelucraresolutie(si)
I:=i+1;
End

Repeat
I:=0;
Repeat i:=i+1;
End;
I:=i+1;
If solutieposinila(si)then prelucraresolutie(si);
Until i=n;

16. Care sunt avantajele şi dezavantajele algoritmilor bazaţi pe tehnica


GREEDY în comparaţie cu ....?

Probleme la tema Structuri dinamice de date.


1. Se dă o listă unidirecţională ce conţine date despre elevii unei clase: nume, prenume, nota
medie la disciplinele de studiu. Afişaţi numele şi prenumele elevilor care au media mai mare
decât media pe clasă. Calculaţi şi afişaţi numărul elevilor respectivi din clasă. Scrieţi
subprogramele ce prelucrează datele conform cerinţelor problemei.
2. Se dă o listă unidirecţională ce conţine date despre elevii unei şcoli: nume, prenume,
clasa, nota medie la disciplinele de studiu. Determinaţi media notelor elevilor din fiecare clasă.
Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
3. Se dau două liste unidirecţionale de numere întregi. Creaţi o listă ce conţine numerele din
listele date fără a le repeta. Scrieţi subprogramele ce prelucrează datele conform cerinţelor
problemei.
4. Se dau două liste liniare de numere întregi distincte. Excludeţi din prima listă toate
numerele ce se conţin şi în lista a doua. Scrieţi subprogramele ce prelucrează datele conform
cerinţelor problemei.
5. Se dau două liste unidirecţionale de numere întregi ordonate crescător. Creaţi o a treia
listă, astfel încât să conţină numerele din cele două liste date şi să fie aranjate în ordine
crescătoare. Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
6. Se dă o listă unidirecţională de numere întregi. Excludeţi din listă numerele care se
repetă, astfel încât valoarea lor să apară în listă o singură dată. Scrieţi subprogramele ce
prelucrează datele conform cerinţelor problemei.
7. Se dă o listă unidirecţională ce conţine date despre elevi: nume, prenume, clasa, nota
medie. Excludeţi din listă elevii care au media mai mică decât o valoare dată M. Scrieţi
subprogramele ce prelucrează datele conform cerinţelor problemei.
8. Se dă o listă unidirecţională ce conţine date despre elevi: nume, prenume, clasa, nota
medie. Ordonaţi lista în ordinea descreşterii notei medii. Scrieţi subprogramele ce prelucrează
datele conform cerinţelor problemei.
9. Creaţi o listă unidirecţională de N numere întregi ce va conţine numerele în studiu şi
echivalentele binar şi octal ale lor. Scrieţi subprogramele ce prelucrează datele conform
cerinţelor problemei.
10. Componentele a două liste unidirecţionale conţin cifrele a două numere binare. Începutul
numărului este la acelaşi capăt al listelor. Creaţi a treia listă ce va conţine suma acestor două
numere binare. Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
11. O listă unidirecţională conţine coordonatele unor puncte pe plan. Ordonaţi punctele în
ordinea creşterii coordonatei X. Calculaţi lungimea liniei frânte ce va uni punctele respective.
Formula de calculare a distanţei dintre două puncte pe plan este s  ( x 2  x1) 2  ( y 2  y1) 2 ,
unde x1, x2, y1 şi y2 sunt coordonatele punctelor respective. Scrieţi subprogramele ce
prelucrează datele conform cerinţelor problemei.
12. Se dă o listă unidirecţională ce conţine date despre elevii absolvenţi ai liceului: nume,
prenume, clasa, profilul, disciplina de examen la solicitare, nota medie. Creaţi câte o listă
grupând candidaţii după disciplina de examen la solicitare. Determinaţi câţi elevi au solicitat
fiecare disciplină. Afişaţi la ecran denumirea disciplinei si numărul de candidaţi. Scrieţi
subprogramele ce prelucrează datele conform cerinţelor problemei.
13. Se dă câte o listă unidirecţională ce conţine date despre elevii absolvenţi ai liceului pentru
fiecare clasă: nume, prenume, clasa, profilul, disciplina de examen la solicitare, nota medie la
toate disciplinele. Creaţi o listă unică a tuturor absolvenţilor, ordonată alfabetic, care va conţine
datele despre absolvenţi din listele iniţiale, plus notele obţinute la trei examene, nota medie la
examene şi media notei medii la toate disciplinele şi a mediei notelor de la examene. Scrieţi
subprogramele ce prelucrează datele conform cerinţelor problemei.
14. Componentele unui tablou liniar reprezintă liste de cuvinte, ce încep cu aceeaşi literă.
Componentele tabloului sunt sortate alfabetic. Fiecare listă conţine cuvinte ce încep cu o anumită
literă şi, la rândul lor sunt sortate şi ele alfabetic. Fie dată o listă de cuvinte, care trebuie incluse
în listele din tablou, astfel încât ele să ocupe loc conform ordinii alfabetice în ambele structuri
(tablou şi lista corespunzătoare). Scrieţi un program ce va realiza includerea cuvintelor în liste.
Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
15. O listă unidirecţională conţine date despre cititorii unei biblioteci. Fiecare componentă a
listei cititorilor conţine aşa date: nume, prenume cititor, data naşterii, adresa şi lista cărţilor
împrumutate de cititorul respectiv. Despre fiecare carte împrumutată se ştie numele, prenumele
autorului, denumirea, data împrumutului. Scrieţi un program ce va determina numărul tuturor
cărţilor împrumutate de cititori la moment. Scrieţi subprogramele ce prelucrează datele conform
cerinţelor problemei.
16. O listă unidirecţională conţine date despre posesorii de automobile dintr-un raion:
numele, prenumele posesorului, localitatea de trai a posesorului, marca, număr de înmatriculare
ale automobilului. Creaţi câte o listă ce va conţine datele din prima listă pentru fiecare localitate.
Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
17. Creaţi un arbore binar ce va conţine litere majuscule ale alfabetului latin astfel, încât mai
întâi să fie completat subarborele drept, apoi cel stâng. Scrieţi subprogramele ce prelucrează
datele conform cerinţelor problemei.
18. Creaţi un arbore binar ce va conţine numere reale astfel, încât mai întâi să fie completat
subarborele stâng, apoi cel drept. Scrieţi subprogramele ce prelucrează datele conform cerinţelor
problemei.
19. Componentele unui arbore binar conţin numere naturale. Scrieţi un program ce va afişa
valorile păstrate de componentele unui arbore binar la parcurgerea lui după schema D-R-S.
Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
20. Componentele unui arbore binar conţin caractere ASCII. Scrieţi un program ce va afişa
valorile păstrate de componentele unui arbore binar la parcurgerea lui după schema D-S-R.
Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
21. Componentele unui arbore binar conţin numere reale. Scrieţi un program ce va afişa
valorile păstrate de componentele unui arbore binar la parcurgerea lui după schema R-D-S.
Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
22. Componentele unui arbore binar conţin numere întregi. Scrieţi un program ce va afişa
valorile păstrate de componentele unui arbore binar la parcurgerea lui după schema S-R-D.
Scrieţi subprogramele ce prelucrează datele conform cerinţelor problemei.
23. Componentele unui arbore binar conţin caractere ASCII. Scrieţi un program ce va
introduce valorile păstrate de componentele unui arbore binar la parcurgerea lui după schema S-
D-R într-o listă unidirecţională. Scrieţi subprogramele ce prelucrează datele conform cerinţelor
problemei.
24. Componentele unui arbore binar conţin caractere ASCII. Scrieţi un program ce va crea o
listă unidirecţională ce va conţine mulţimea caracterelor păstrate în arbore (aceleaşi caractere vor
fi înscrise în listă o singură dată). Scrieţi subprogramele ce prelucrează datele conform cerinţelor
problemei.

I. Determinaţi necesarul de memorie pentru variabilele din declaraţiile de mai jos.


1. type persoana=record 2. type a_celula=^celula;
info:string[12]; celula=record
leg:lista; Nume, prenume:string;
end; nota_med:real;
tablou=array[1..50] of persoana; leg:a_celula;
var i:integer; end;
aux:persoana; var p, q, r:a_celula;
t:tablou; n, i:integer;
procedure test(var tt:tablou); function f(z:a_celula):real;
var p:persoana; var j:integer;
…………………………. …………………..
begin {program} Begin {program}
……………….. readln(n); p:=nil; q:=p;
Test(t); for i:=1 to n do begin
…………… new(r);
End. …………..
End;
Writeln(f(p));
End.
II. Determinaţi numărul de operaţii elementare necesare pentru executarea secvenţei:
1 s:=’informatica’; 1. for i:=1 to n do
2 k:=length(s); 2 begin
3 for i:=1 to n do 3 readln(k);
4 t[i]:=0; 4 if (k mod 2) =0 then
5 for j:=1 to k do 5 writeln(k)
6 if s[j] in [‘a’..’z’] then t[s[j]]:=t[s[j]]+1; 6 else begin
7 for c:=’a’ to ‘z’ do 7 if k>10 then k=k div 10;
8 if t[c]=0 then 8 writeln(‘o zecime =’, k);
9 Writeln(c,‘nu este’); end; end;
I. Determinaţi necesarul de memorie pentru variabilele din declaraţiile de mai jos.
3. type multime=set of char; 4. type orase=(Orhei, Balti, Soroca, Calarasi);
Tablou=array[1..20] of string; participant=record
Var m1, m2:multime; cod:byte;
T:tablou; nume, prenume:string;
r :array[1..20] of byte ; puncte:integer;
i, j:integer; end;
C:char; Tablou=array[orase] of participant;
Function f(s:string):integer; var t:tablou;
var k, d:integer; c:orase;
…………………………… procedure P (var x :tablou) ;
Begin {program} var i:integer;
…………………… ………………………..
Writeln(f(t[i])); Begin {program}
End. P(t);
End.
II. Determinaţi numărul de operaţii elementare necesare pentru executarea secvenţei:
1 n1:=0; n2:=0; 1 aux:=t[1];
2 for i:=1 to 10 do begin 2 i:=1;
3 readln(s); 3 While i< n do
4 case s of 4 begin
5 ‘0’..’9’: n1:=n1+1; 5 t[i]:=t[i+1];
6 ‘A’..’Z’, ‘a’..’z’:n2:=n2+1; 6 i:=i+1; end;
7 end; 7 t[n]:=aux;
end; 8 for i:=1 to n do
8 writeln(‘n1=’, n1); 9 write(t[i], ‘ ‘);
9 writeln(‘n2=’, n2; 10 writeln;

I. Determinaţi necesarul de memorie pentru variabilele din declaraţiile de mai jos.


1. type multime=set of char; 1 type tari=(Moldova, Ucraina, Rusia, Cehia);
Tablou=array[1..20] of string; participant=record
Var m:multime; cod:string[5];
t:tablou; puncte:integer;
r :array[1..20] of byte ; end;
i, j:integer; Tablou=array[tari] of participant;
c:char; var t:tablou;
s:^char; c:orase;
Function f(s:string):integer; r :^tablou ;
var k,d:integer; p :participant ;
begin
new( r ) ;
II. Determinaţi numărul de operaţii elementare necesare pentru executarea secvenţei:
1) 2)
1 n1:=0; n2:=0; n3:=0; readln(n); 1 for i:=1 to n do
2 for i:=1 to n do begin 2 readln(t[i]);
3 readln(s); 3 aux:=t[1];
4 case s of 4 k:=1;
5 ‘0’..’9’: n1:=n1+1; 5 For i:=2 to n do
6 ‘a’..’z’:n2:=n2+1; 6 begin
7 ‘A’..’Z’:n3:=n3+1; 7 if t[i]<aux then begin
end; 8 aux:=t[i];
end; 9 k:=i; end;
9 writeln(‘n1=’, n1); 10 writeln(‘min=’, aux, ‘ k=’,k);
10 writeln(‘n2=’, n2; 11 for i:=1 to n do
11 writeln(‘n3=’, n3); 12 if t[i]=aux then write(t[i], ‘ ‘);
13 writeln;

I. Determinaţi necesarul de memorie pentru variabilele din declaraţiile de mai jos.


3. type persoana=record 4. type a_celula=^celula;
nume:string[19]; celula=record
zi, luna, an_nast:integer; Nume:string;
end; nr_loc, supraf:real;
tablou=array[1..20] of persoana; leg:a_celula;
var i, k:integer; end;
t:tablou; var s, v, r:a_celula;
procedure test(var tt:tablou); n, i:integer;
var p, aux:persoana; begin
begin ……end; readln(n);
begin {program} for i:=1 to n do
……………….. begin
Test(t); new(r);
End. …………..
End;End.
II. Determinaţi numărul de operaţii elementare necesare pentru executarea secvenţei:
3. 4.
1 begin 1 r:=0;
2 s:=’suntem 7 surori’; 2 for i:=1 to n do
3 k:=length(s); 3 begin
4 for c:=’a’ to ‘z’ do 4 readln(k);
5 t[c]:=0; 5 if (k mod 2) =0 then
6 for j:=1 to k do 6 writeln(k)
7 if (s[j]>=’a’) and (s[j]<=’z’) then 7 else
8 t[s[j]]:=t[s[j]]+1; 8 if k>10 then
9 for c:=’a’ to’z’ do 9 begin
10 writeln(c,’-‘,t[c]); 10 p=k div 10;
11 writeln; 11 writeln(‘procentul=’, p);
12 end. 12 r:=r+1;
13 end; End;

I. Determinaţi necesarul de memorie pentru variabilele din declaraţiile de mai jos.


1. type multime=set of 1..200; 1 type multime=set of 1..36;
Tablou=array[1..20] of multime; participant=record
Var m:multime; cod:1..3000;
T1:tablou; nume, prenume:string[25];
t2 :array[1..20] of string[24] ; numere:multime;
i, j, r:integer; end;
c:char; Tablou=array[1..1000] of participant;
s:^string; var t:tablou;
Function f(tt:tablou):integer; m :multime ;
var k,d:integer; s:integer;
X:multime; procedure f(tt :tablou, x :multime; var k:integer);
Begin {program} var i, j:integer;
r := f(t1); p :participant
end. begin {program}
f( t,m,s) ;
end.
II. Determinaţi numărul de operaţii elementare necesare pentru executarea secvenţei:
1) 2)
1 m1:=[]; m2:=[]; m3:=[]; 1 s:=’primavara’;
2 n:=0; 2 n1:=0; n2:=0;
3 m:=m1+m2; 3 for i:=1 to 9 do
4 r:=m*m3; 4 case s[i] of
5 for i:=1 to 50 do 5 ‘a’,’e’,’i’,’o’,’u’:n1:=n1+1
6 If i in m then write(i,’ ‘); 6 else n2:=n2+1;
7 Writeln; 7 end;
8 for i:=1 to 50 do 8 if n1>n2 then writeln(‘n1>n2’)
9 If i in r then n:=n+1 else write(i,’ ‘); 9 else writeln(‘n1 nu este mai mare ca n2’);
10 Writeln; 10 while s<>’’ do
11 writeln(‘n=’, n); 11 begin
12 delete(s, 1, 1);
13 writeln(s);
End;

I. Determinaţi necesarul de memorie pentru variabilele din declaraţiile de mai jos.


3. type carte=record 4. type multime=set of 1..25 ;
numeautor, denumire:string[50]; a_celula=^celula;
an_edit:integer; celula=record
Prêt:real; numere:multime;
end; cod:string;
tablou=array[1..40] of carte; leg:a_celula;
var i, k, x:integer; end;
t:tablou; var s, v, r:a_celula;
function test(tt:tablou; an_caut:integer):integer; n, i:integer;
var j, n:integer; multnor:multime;
begin ……end; function f(ss:a_celula):integer;
begin {program} var k:integer;
……………….. begin {program}
K:=Test(t,x); readln(n);
End. for i:=1 to n do
begin
new(r);
…………..
End;
Writeln(f(s));
End.
II. Determinaţi numărul de operaţii elementare necesare pentru executarea secvenţei:
3. 4.
1 begin 1 r:=0;
2 M:=[]; 2 for i:=1 to n do
3 for i:=2 to 220 do 3 for j:=1 to n do
4 begin 4 begin
5 Q:=true; 5 k:=i*10+j;
6 for j:=2 to i div 2 do 6 if (k mod x) =0 then begin
7 If i mod j=0 then q:=false; 7 writeln(k);
8 If q then m:=m+[i]; 8 inc( r ); end
9 End; 9 else
10 for j:=1 to 220 do 10 if k>m then
11 if j in m then write(j,’ ‘); 11 writeln(k); end;
12 end. 12 writeln(‘r=’,r);

I. Determinaţi necesarul de memorie pentru variabilele din declaraţiile de mai jos.


1. type tara=record 1 type note=(C, D, E, F, G, A, H);
denumire:strind[40]; el_piesa=record
nr_loc, supr:real; d_n:note
capitala:string; durata:integer;
Tablou=array[1..30] of tara; end;
Var t:tablou; a_celula=^piesa;
i, j:integer; piesa=record
Med:real; nota_m:el_piesa;
Procedure test(tt:tablou; m:real); leg:a_celula;
var k,d:integer; end;
begin {program} var p:a_celula;
test(t, med); n:integer;
end. function f(m:integer):a_celula;
var i:integer;
begin
for i:=1 to m do begin
new( r ) ;
………end;
Begin {program}
P:=f(n);
End.
II. Determinaţi numărul de operaţii elementare necesare pentru executarea secvenţei:
1) 2)
1 begin 1 begin
2 i:=1; 2 for i:=1 to 20 do
3 n:=0; 3 t[i]:=2*i;
4 While i<30 do begin 4 K:=0;
5 P:=true; 5 for i:=1 to 20 do
6 K:=0; 6 begin
7 For j:=1 to i do 7 S:=t[i] mod 10 +t[i] div 10;
8 If i mod j=0 then inc(k); 8 If s mod 2 =0 then
9 If k>2 then 9 k:=k+1 else writeln(t[i]);
10 begin 10 s:=0;
11 writeln(i); 11 For i:=1 to 20 do
12 inc(n); 12 s:=s+t[i];
13 end; 13 writeln(‘s=’, s);
14 inc(i); 14 end.
15 end;
16 writeln(n);
17 end.

S-ar putea să vă placă și