Documente Academic
Documente Profesional
Documente Cultură
unidimensionale
Algoritmi
fundamentali
Realizat de
Carmen Rus
Maxime si Minime
Cutare binar
Cutari de
elemente
Cutare
liniar
Parcurgeri
Sume si numrri
Oare de ce dai daca apesi butonul acesta ??
Daca nu apsai
Cautari de
elemente
Probleme
uses crt;
var aux,i,j,n,k,min:integer;
a,e:array[1..100] of string;
b,c,d,f:array[1..100] of integer;
aux1:string;
begin
clrscr;
writeln('Dati numarul de
elevi 1<=n<=100 ');readln(n);
writeln('Dati numele,inaltimea si
greutatea celor ',n,' elevi:');
for i:=1 to n do begin
readln(a[i]);
readln(b[i]);
d[i]:=b[i];
readln(c[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if b[i]<b[j] then begin
aux:=b[i];
b[i]:=b[j];
b[j]:=aux;
end;
for i:=1 to n do
for j:=1 to n do
if b[i]=d[j] then begin
e[i]:=a[j];
f[i]:=c[j];
d[j]:=0;
j:=n; end;
for i:=1 to n-1 do
if b[i]=b[i+1] then
if f[i]<f[i+1] then begin
aux1:=e[i];
e[i]:=e[i+1];
e[i+1]:=aux1;
aux:=f[i];
f[i]:=f[i+1];
f[i+1]:=aux
end;
for j:=1 to n do begin
write ('Numele: ',e[j],' ','Inaltimea: ',b[j],'
','Greutatea: ',f[j]);
writeln; end;
readln
end.
Maxime si Minime
Probleme
uses crt;
var i,n,min:integer;
x:array[1..100] of string;
y:array[1..100] of integer;
begin
clrscr;
writeln('Dati numarul de elevi
1<=n<=100 ');readln(n);
writeln('Dati numele celor ',n,' elevi:');
for i:=1 to n do readln(x[i]);
writeln('Dati mediile celor ',n,' elevi: ');
for i:=1 to n do read(y[i]);readln;
min:=y[1];
for i:=2 to n do
if y[i]<min then min:=y[i];
for i:=1 to n do
if min=y[i] then write(x[i],' ');
readln;
end.
l:=1;
for i:=ord('A') to ord('Z') do begin
k:=0;
for j:=1 to n do
if i=ord(a[j])then k:=k+1;
c[l]:=k;
l:=l+1;
end;
l:=1;
for i:=ord('a') to ord('z') do begin
k:=0;
for j:=1 to n do
if i=ord(a[j]) then k:=k+1;
d[l]:=k;
l:=l+1;
end;
min:=maxint;max:=-maxint;
for i:=1 to l do begin
e[i]:=c[i]+d[i];
end;
for i:=1 to l do begin
if (e[i]<min) and (e[i]>0) then min:=e[i];
if e[i]>max then max:=e[i]
end;
writeln('Litera/Literele cu cea mai mare
frecventa de aparitie este/sunt:');
for i:=1 to l do
if e[i]=max then write(chr(64+i),' ');writeln;
writeln('Litera/Literele cu cea mai mica
frecventa de aparitie este/sunt:');
for i:=1 to l do
if e[i]=min then write(chr(64+i),' ');
{ for i:=1 to n do write (a[i],' ');}
readln
end.
max:=-maxint;
for i:=1 to j+1 do
if b[i]>max then max:=b[i];
{write(max:5);writeln;}
k:=1;
for i:=1 to j+1 do
if b[i]=max then begin
write(a[k],' ');
k:=k+b[i]
end
else
k:=k+b[i];
readln
end.
var t,k,i,j,l,n,aux:longint;
a,b,c,d:array[1..100]of longint;
begin
write('Dati n: ');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
t:=1;k:=0;d[i]:=a[i];
repeat
k:=k+1;
b[k]:=a[i] mod 10;
a[i]:=a[i] div 10;
until a[i]=0;
for j:=1 to k-1 do
for l:=j+1 to k do
if b[j]>b[l] then begin
aux:=b[j];
b[j]:=b[l];
b[l]:=aux
end;
Cautare binara
a)pe structura
repeat..until
b)pe structura
while..do
a
)
program cautare_binara;
var n,i,j,aux,x,ls,ld,mij:integer;
a:array[byte] of integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('x=');readln(x);
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;
ls:=1;
ld:=n;
repeat
mij:=(ls+ld) div 2;
if a[mij]=x then
writeln('cautare cu succes')
else
if a[mij]>x then
ld:=mij-1
else
ls:=mij+1;
until (a[mij]=x) or (ls>ld);
if ls>ld then
write('nu exista ',x,' in vector');
readln
end.
b)
program cautarebinara;
var
n,i,j,aux,x,ls,ld,mij,sw:inte
ger;
a:array[byte] of integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('x=');readln(x);
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;
ls:=1;
ld:=n;
mij:=(ls+ld) div 2;
sw:=0;
while (a[mij]<>x) and (ls<=ld) do
begin
if a[mij]>x then
ld:=mij-1
else
ls:=mij+1;
mij:=(ls+ld) div 2;
end;
if a[mij]=x then
writeln('este in vector')
else
writeln('nu exista ',x,' in vector');
readln
end.
Cautare liniara
program cautare_liniara;
var a:array[1..50] of integer;
x:integer;
i,n,sw:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('x=');readln(x);
sw:=0;
for i:=1 to n do
if a[i]=x then
sw:=1;
if sw=0 then write(x,' nu se afla in
vector')
else write('cautare cu succes');
readln
end.
Parcurgeri
Sume si numarari
Probleme
{La codificarea unui text scris cu cel mult primele n litere mici ale afabetului
englez, se folosesc cele mai mici n numere naturale care au exact 3 divizori
naturali. Pentru litera 'a' se foloseste cel mai mic nr cu proprietatea respectiva,
pentr 'b' cel mai mic numar diferit de cel folosit pentru 'a',si asa mai departe.
a)Sa se afiseze, separate prin cate un spatiu, cele n numere folosite la
codificare.
b)Pentru un text dat de la tastatura,se cere sa se afiseze codificarea textului,
fiecare caracter fiind inlocuit cu numarul corespunzator si orice doua coduri
conscutive vor fi separate printr-un spatiu.}
var n,i,d,j,c:integer;
a:array[1..25] of char;
b:array[1..25] of integer;
begin
writeln('Dati nr de litere -vezi
enunt');readln(n);
writeln('Dati textul');
for i:=1 to n do read(a[i]);
i:=4;
repeat
d:=2;c:=1;
while(d<=i) do begin
if (i mod d=0) then
begin
c:=c+1;
d:=d+1
end
else d:=d+1;
end;
1.Stiind
a)
b)
c)
d)
var x:byte;
var x:array[1..16,1..12] of byte;
var x:array[1..16] of byte;
var x:array[1..15] of byte;
Next
b) 33, 123, 93
c) 23, 12, 93
d) 23, 33, 123, 12, 93
Next
Next
a)Vectorul
b)Si elmetele pare si cele impare
dintr-un vector
c)Numerele care impartite la 2
dau restul zero
d)Nimic deoarece este gresit
J:= 0;
For I:= n downto 1 do
if (I mod 2= 0) and (a[I] mod
2= 0) then begin
inc (j);
b[j]:= a[I];
End;
Next
DA
NU
Daca nu apsai
Ai rspuns greit
Mai cearc
Back
Gandeti bine !
Back
Sfarit