APLICATII CU TIPURI DE DATE STRUCTURATE ALGORITMI ELEMENTARI
1 TABLOURI
1.1 Determinare minim/maxim
Program element_minim;
var a:array [1..20] of integer;
n,i,min:integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin write('a[',i,']=');readln(a[i]) end;
min:=MAXINT;
for i:=1 to n do
if a[i]<min then min:=a[i];
writeln('Elementul minim din sir este: ',min);
readln
end.
Program element_maxim;
var a:array [1..20] of integer;
n,i,max:integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin write('a[',i,']=');readln(a[i]) end;
max:=-MAXINT;
for i:=1 to n do
if a[i]>max then max:=a[i];
writeln('Elementul maxim din sir este: ',max);
readln
end.
1.2 Ordonare (metoda bulelor, insertie, selectie, numarare)
Program ordonare_metoda_bulelor;
var a:array[1..15]of integer;
n,i,aux:integer;
ordonat:boolean;
begin
write('n=');readln(n);
for i:=1 to n do
begin write('a[',i,']='); readln(a[i])
end;
write('Vectorul initial:');
for i:=1 to n do
write(a[i],' ');
writeln;
repeat
ordonat:=true;
for i:=1 to n-1 do
if a[i]>a[i+1] then begin
aux:=a[i];
a[i]:=a[i+1];
a[i+1]:=aux;
ordonat:=false
end
until ordonat;
write('Vectorul ordonat crescator: ');
for i:=1 to n do
write(a[i],' ');
readln
end.
Program ordonare_metoda_insertiei;
var a:array[1..15]of integer;
n,i,aux,j:integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i])
end;
write('Vectorul initial este: ');
for i:=1 to n do
write(a[i],' ');
writeln;
for i:=2 to n do
begin
aux:=a[i];j:=i-1;
while (j>0) and (aux<a[j])do
begin
a[j+1]:=a[j];
j:=j-1
end;
a[j+1]:=aux
end;
write('Vectorul ordonat crescator: ');
for i:=1 to n do
write(a[i],' ');
readln
end.
Program ordonare_metoda_selectiei;
var a:array[1..15]of integer;
n,i,aux,j,min,poz:integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i])
end;
write('Vectorul initial este: ');
for i:=1 to n do
write(a[i],' ');
writeln;
for i:=1 to n-1 do
begin
min:=a[i];poz:=i;
for j:=i+1 to n do
if a[j]<min then begin min:=a[j];
poz:=j end;
if poz<>i then begin
aux:=a[i];
a[i]:=a[poz];
a[poz]:=aux
end
end;
write('Vectorul ordonat crescator: ');
for i:=1 to n do
write(a[i],' ');
readln
end.
Fiind dat un sir de n numere intregi memorat intr-un vector sa se ordoneze crescator elementele vectorului prin numarare.
Program ordonare_numarare;
var a,nr:array[1..10]of integer;
n,i,j,aux,k:integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i])
end;
write('Vectorul initial este: ');
for i:=1 to n do
write(a[i],' ');
writeln;
for i:=1 to n do
nr[i]:=1;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then nr[i]:=nr[i]+1
else nr[j]:=nr[j]+1;
write('Vectorul ordonat crescator:');
for i:=1 to n do
begin
if nr[i]<>i then begin j:=i; repeat j:=j+1 until nr[j]=i; aux:=a[i];a[i]:=a[j];a[j]:=aux;
nr[j]:=nr[i];nr[i]:=i end;
end;
for i:=1 to n do
write(a[i],' ');
readln;
end.
1.3 Interclasare
Fiind date doua siruri de n, respectiv m numere intregi memorate in doi vectori (vectorii sunt ordonati crescator), se cere sa se formeze al treilea vector care sa contina elementele celor doi vectorui (elementele comune se iau o singura data) de asemenea ordonate crescator.
Program interclasarea_a_doi_vectori;
var a,b,c:array[1..20]of integer;
n,m,i,j,k:integer;
begin
write('n=');readln(n);
write('m=');readln(m);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i])
end;
for i:=1 to m do
begin
write('b[',i,']='); readln(b[i])
end;
write('Vectorul unu: ');
for i:=1 to n do
write(a[i],' ');
writeln;
write('Vectorul doi: ');
for i:=1 to m do
write(b[i],' ');
writeln;
i:=1;j:=1;k:=0;
while (i<=n) and (j<=m) do
begin
k:=k+1;
if a[i]<b[j] then begin
c[k]:=a[i];
i:=i+1
end
else if a[i]>b[j] then begin
c[k]:=b[j];
j:=j+1
end
else begin
c[k]:=a[i];
i:=i+1;
j:=j+1
end
end;
if i<=n then for j:=i to n do
begin
k:=k+1;
c[k]:=a[j]
end
else for i:=j to m do
begin
k:=k+1;
c[k]:=b[i]
end;
write('Vectorul rezultat: ');
for i:=1 to k do
write(c[i],' ');
readln
end.
1.4 Metode de cautare (secventiala, binara)
Fiind dat un sir de n numere intregi ordonat crescator, memorat intr-un vector si un numar intreg nr, sa se decida daca nr se gaseste in sirul celor n numere citite. (cautare binara)
Program cautare_binara;
var a:array [1..20] of integer;
n,i,nr,li,ls,mijloc:integer;
gasit:boolean;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i])
end;
write('nr=');readln(nr);
li:=1; ls:=n; gasit:=false;
repeat
mijloc:=(li+ls) div 2;
if nr=a[mijloc] then gasit:=true
else if nr<a[mijloc] then ls:=mijloc-1
else li:=mijloc+1
until (li>ls) or (gasit);
if gasit then writeln(nr,' face parte din sir si este pe pozitia ',mijloc)
else writeln(nr,' nu face parte din sir');
readln
end.
Fiind dat un sir de n numere intregi, memorat intr-un vector si un numar intreg nr, sa se decida daca nr se gaseste in sirul celor n numere citite. (cautare secventiala)
Program cautare_secventiala;
var a:array [1..20] of integer;
n,i,nr:integer;
gasit:boolean;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i])
end;
write('nr=');readln(nr);
gasit:=false; i:=1;
while (i<=n) and (not gasit) do
begin
if nr=a[i] then gasit:=true;
i:=i+1
end;
if gasit then writeln(nr,' face parte din sir si este pe pozitia ',i-1)
else writeln(nr,' nu face parte din sir');
readln
end.
1.5 Parcurgerea unei matrice in raport cu diagonalele
Se considera o matrice cu n linii si n coloane.O matrice cu proprietatea ca numarul liniilor este egal cu numarul coloanelor se numeste matrice patratica.
a11 a12 a13 a14 diagonala principala: a11, a22, a33, a44
a21 a22 a23 a24 deasupra diagonalei principale: a12, a13, a14, a23, a24, a34
a31 a32 a33 a34 sub diagonala principala: a21, a31, a32, a41, a42, a43
a41 a42 a43 a44
Pentru a "vizita" elementele de pe diagonala principala parcurgem toate elementele din matrice in doua cicluri (liniile i de la 1 la n si coloanele j de la 1 la n) si pentru fiecare element a[i,j] testam daca este situat pe diagonala principala, adica verificam daca i=j.
For i:=1 to n do sau For i:=1 to n do
For j:=1 to n do <prelucreaza a[i,i]>
if i=j then
<prelucreaza a[i,j]>
Pentru a "vizita" elementele de deasupra diagonalei principale avem doua posibilitati:
a) parcurgem toate elementele din matrice in doua cicluri (liniile i de la 1 la n si coloanele j de la 1 la n) si pentru fiecare element a[i,j] testam daca este situat deasupra diagonalei principale, adica verificam daca i<j
b) "vizitam" numai elementele aflate deasupra diagonalei principale: parcurgem numai liniile i care contin elemente deasupra diagonalei principale i=1,2,.,n-1.Pentru fiecare linie i, parcurgem numai coloanele j ale liniei i care au elemente deasupra diagonalei principale, adica j=i+1,.,n.
b)
a) For i:=1 to n do b) for i:=1 to n-1 do
For j:=1 to n do for j:=i+1 to n do
if i<j then <viziteaza a[i,j]>
<prelucreaza a[i,j]>
Pentru a "vizita" elementele de sub diagonala principala avem doua posibilitati:
a) parcurgem toate elementele din matrice in doua cicluri (liniile i de la 1 la n si coloanele j de la 1 la n) si pentru fiecare element a[i,j] testam daca este situat sub diagonala principala, adica verificam daca j<i
b) "vizitam" numai elementele aflate sub diagonala principala: parcurgem numai liniile i care contin elemente situate sub diagonala principala i=2,.,n.Pentru fiecare linie i, parcurgem numai coloanele j ale liniei i care au elemente sub diagonala principala, adica j=1,.,i-1.
b)
a) For i:=1 to n do b) for i:=2 to n do
For j:=1 to n do for j:=1 to i-1 do
if j<i then <viziteaza a[i,j]>
<prelucreaza a[i,j]>
a11 a12 a13 a14 diagonala secundara: a14, a23, a32, a41
a21 a22 a23 a24 deasupra diagonalei secundare: a11, a12, a13, a21, a22, a31
a31 a32 a33 a34 sub diagonala secundara: a24, a34, a33, a44, a43, a42
a41 a42 a43 a44
Pentru a "vizita" elementele de pe diagonala secundara parcurgem toate elementele din matrice in doua cicluri (liniile i de la 1 la n si coloanele j de la 1 la n) si pentru fiecare element a[i,j] testam daca este situat pe diagonala secundara, adica verificam daca i+j=n+1.
For i:=1 to n do sau For i:=1 to n do
For j:=1 to n do <prelucreaza a[i,n-i+1]>
if i+j=n+1 then
<prelucreaza a[i,j]>
Pentru a "vizita" elementele de deasupra diagonalei secundare avem doua posibilitati:
a) parcurgem toate elementele din matrice in doua cicluri (liniile i de la 1 la n si coloanele j de la 1 la n) si pentru fiecare element a[i,j] testam daca este situat deasupra diagonalei secundare, adica verificam daca i+j<n+1
b) "vizitam" numai elementele aflate deasupra diagonalei secundare: parcurgem numai liniile i care contin elemente deasupra diagonalei secundare i=1,2,.,n-1.Pentru fiecare linie i, parcurgem numai coloanele j ale liniei i care au elemente deasupra diagonalei secundare, adica j=1,.,n-i.
b)
a) For i:=1 to n do b) for i:=1 to n-1 do
For j:=1 to n do for j:=1 to n-i do
if i+j<n+1 then <viziteaza a[i,j]>
<prelucreaza a[i,j]>
Pentru a "vizita" elementele de sub diagonala secundara avem doua posibilitati:
a) parcurgem toate elementele din matrice in doua cicluri (liniile i de la 1 la n si coloanele j de la 1 la n) si pentru fiecare element a[i,j] testam daca este situat sub diagonala secundara, adica verificam daca i+j>n+1.
b) "vizitam" numai elementele aflate sub diagonala secundara: parcurgem numai liniile i care contin elemente situate sub diagonala secundara i=2,.,n.Pentru fiecare linie i, parcurgem numai coloanele j ale liniei i care au elemente sub diagonala secundara, adica j=n,.,n-i+2.
b)a) For i:=1 to n do b) for i:=2 to n do
b) For j:=1 to n do for j:=n-i+2 to n do
b) if i+j>n+1 then <viziteaza a[i,j]>
b) <prelucreaza a[i,j]>
b)
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |