Sunteți pe pagina 1din 4

Fișa de lucru nr.

14 Anul 3 Disciplina Informatica


FIŞĂ DE LUCRU
Metoda trierii
Numele, prenumele Dinu Octavian
Data: 24.11.2021 grupa Mk-191
Disciplina: Informatică
Scopul lucrării: Utilizarea tehnicilor de programare la rezolvarea problemelor

PARTEA TEORETICĂ
Metoda trierii
Metoda trierii presupune că soluţia unei probleme poate fi găsită analizând consecutiv elementele si ale unei mulţimi
finite
S = {s1, s2, …, si, …, sk},
denumită mulţimea soluţiilor posibile. În cele mai simple cazuri elementele si, si ϵ S, pot fi reprezentate prin valori
aparţinând unor tipuri ordinale de date: integer, boolean, char, enumerare sau subdomeniu. În problemele
mai complicate suntem nevoiţi să reprezentăm aceste elemente prin tablouri, articole sau mulţimi. Menţionăm că
în majoritatea problemelor soluţiile posibile s1, s2, …, sk nu sunt indicate explicit în enunţul problemei şi elaborarea
algoritmilor pentru calcularea lor cade în sarcina programatorului.
Schema generală a unui algoritm bazat pe metoda trierii poate fi redată cu ajutorul unui ciclu:
for i:= 1 to k do
if SolutiePosibila(si) then PrelucrareaSolutiei(si)
unde SolutiePosibila este o funcţie booleană care returnează valoarea true dacă elementul si satisface condiţiile
problemei şi false în caz contrar, iar PrelucrareaSolutiei este o procedură care efectuează prelucrarea elementului
selectat. De obicei, în această procedură soluţia si este afişată la ecran.
Avantajul principal al algoritmilor bazaţi pe metoda trierii constă în faptul că programele respective sunt relativ
simple, iar depanarea lor nu necesită teste sofisticate. Complexitatea temporală a acestor algoritmi este determinată de
numărul de elemente k din mulţimea soluţiilor posibile S. În majoritatea problemelor de o reală importanţă practică metoda
trierii conduce la algoritmii exponenţiali. Întrucât algoritmii exponenţiali sunt inacceptabili în cazul datelor de intrare foarte
mari, metoda trierii este aplicată numai în scopuri didactice sau pentru elaborarea unor programe al căror timp de execuţie
nu este critic.

Sarcini practice:
Nr. Item Scor
1 Stabiliți valoarea de adevăr pentru fiecare din următoarele afirmații (bifați opțiunea corectă): L
0
o Metoda trierii presupune că soluția unei □ Adevărat □ Fals 1
probleme poate fi găsită analizând 2
consecutiv elementele si ale unei mulțimi 3
finite. 4
5
o Structura algoritmilor bazați pe metoda □ Adevărat □ Fals 6
trierii sunt complicați.

o Metoda trierii conduce la algoritmi □ Adevărat □ Fals


polinomiali.

o Avantajul algoritmilor bazați pe metoda □ Adevărat □ Fals


trierii este că depănarea lor nu necesită
teste sofisticate.

o Metoda trierii este aplicată numai în □ Adevărat □ Fals


scopuri didactice.

o Timpul de execuție este critic pentru □ Adevărat □ Fals


algoritmii bazați pe metoda trierii.

Colegiul Agroindustrial din Ungheni Profesor: Ciornenchi Aliona


Fișa de lucru nr.14 Anul 3 Disciplina Informatica
2 Se consideră numerele naturale din mulţimea {0, 1, 2, ..., n}. Elaboraţi un program care determină pentru câte L
numere K din această mulţime suma cifrelor fiecărui număr este egală cu m. În particular, pentru n = 100 şi m 0
= 3, în mulţimea {0, 1, 2, …, 100} există 4 numere care satisfac condiţiile problemei: 3, 12, 21 şi 30. Prin 1
urmare, K = 4. 2
3
Programul Pascal: 4
Program Andrei; 5
type Natural=0..MaxInt; 6
var i, K, m, n : Natural; 7
function SumaCifrelor(i:Natural) :Natural;
var suma : Natural;
begin
suma:=0;
repeat
suma:=suma+(i mod 10);
i:=i div 10;
until i=0;
SumaCifrelor:=suma;
end;
function SolutiePosibila(i:Natural) :boolean;
begin
if SumaCifrelor(i)=m then SolutiePosibila:=true
else SolutiePosibila:=false;
end;
procedure PrelucrareaSolutiei(i:Natural);
begin
writeln('i=', i);
K:=K+1;
end;
begin
write('Daţi n='); readln(n);
write('Daţi m='); readln(m);
K:=0;
for i:=0 to n do
if SolutiePosibila(i) then PrelucrareaSolutiei(i);
writeln('K=', K);
readln;
end.
Rezultatul:
Daţi n=100
Daţi m=3
i=3
i=12
i=21
i=30
K=4

Colegiul Agroindustrial din Ungheni Profesor: Ciornenchi Aliona


Fișa de lucru nr.14 Anul 3 Disciplina Informatica

3 Se consideră mulţimea P = {P1, P2, …, Pn} formată din n puncte (2 ≤ n ≤ 30) pe un plan L
euclidian. Fiecare punct Pj este definit prin coordonatele sale xj, yj. Elaboraţi un program care 0
afişează la ecran coordonatele punctelor Pa, Pb distanţa dintre care este maximă. 1
Programul Pascal: 2
Program Vasea; 3
4
const nmax=30;
5
type Punct = record 6
x, y : real; 7
end;
Indice = 1..nmax;
var P : array[Indice] of Punct;
j, m, n : Indice;
dmax : real;
PA, PB : Punct;
function Distanta(A, B : Punct) : real;
begin
Distanta:=sqrt(sqr(A.x-B.x)+sqr(A.y-B.y));
end;
function SolutiePosibila(j,m:Indice) :boolean;
begin
if j<>m then SolutiePosibila:=true
else SolutiePosibila:=false;
end;
procedure PrelucrareaSolutiei(A, B : Punct);
begin
if Distanta(A, B)>dmax then
begin
PA:=A; PB:=B;
dmax:=Distanta(A, B);
end;
Colegiul Agroindustrial din Ungheni Profesor: Ciornenchi Aliona
Fișa de lucru nr.14 Anul 3 Disciplina Informatica
end;
begin
write('Dati n='); readln(n);
writeln('Daţi coordonatele x, y ale punctelor');
for j:=1 to n do
begin
write('P[', j, ']: '); readln(P[j].x, P[j].y);
end;
dmax:=0;
for j:=1 to n do
for m:=1 to n do
if SolutiePosibila(j, m) then
PrelucrareaSolutiei(P[j], P[m]);
writeln('Soluţia: PA=(', PA.x:5:2, ',', PA.y:5:2, ')');
writeln(' PB=(', PB.x:5:2, ',', PB.y:5:2, ')');
readln;
end.
Rezultatul:
Dati n=3
Daţi coordonatele x, y ale punctelor
P[1]: 34
76
P[2]: 45
34
Soluţia: PA=(34.00,76.00)
PB=(45.00,34.00)

Colegiul Agroindustrial din Ungheni Profesor: Ciornenchi Aliona

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