Vous êtes sur la page 1sur 3

Algoritimo pesquisa alfabetica:

proceDURE procuranome(x:tAGENDA; n:integer);


var
proc:string[50];
achou:boolean;
i:integer;
begin
writeln('Digite o nome ou parte dele:');
readln(proc);
achou:=FALSE;
for i:=1 to n do begin
if pos(proc,x.a[i].nome)<>0 then begin
lista(x.a[i]);
achou:=TRUE;
end;
end;
if achou=FALSE then writeln('Nenhuma entrada encontrada');
end;

pesquisa binariafunction BuscaBinaria (Vetor: array of string;


Chave: string; Dim: integer): integer;
var inicio, fim: integer; {Auxiliares que representam o
inicio e o fim do vetor analisado}
meio: integer; {Meio do vetor}
begin
fim := Dim; {O valor do último índice do vetor}
inicio := 1; {O valor do primeiro índice do vetor}
repeat
meio := (inicio+fim) div 2;
if (Chave = vetor[meio]) then
BuscaBinaria := meio;
if (Chave < vetor[meio]) then
fim:=(meio-1);
if (Chave > vetor[meio]) then
inicio:=(meio+1);
until (Chave = Vetor[meio]) or (inicio > fim);
if (Chave = Vetor[meio]) then
BuscaBinaria := meio
else
BuscaBinaria := -1; {Retorna o valor encontrado, ou -1
se a chave nao foi encontrada.}
end;

program ordenanomes;

(**********************************************************************

algoritmo de selacao para ordenar nomes em ordem alfabética.


**********************************************************************)

const nmax=50;

var

v: array[1..nmax] of string;

i,j,n,posMenor: integer;

temp:string;

begin

writeln('Digite um inteiro menor ou igual a ' ,nmax, ' : '); readln(n);

writeln('Digite ',n,' strings, uma em cada linha);

for i:=1 to n do readln(v[i]);

for i:=1 to n-1 do begin

posMenor:=i;

for j:=i+1 to n do

if v[j] < v[posMenor] then posMenor := j;

if i <> posMenor then begin

temp := v[i];

v[i] := v[posMenor];

v[posMenor] := temp;

end;

end;

writeln;

for i:=1 to n do writeln(v[i]);

end.

______________________________________________________________________

Ordenação numerica
program ordenasel;

const nmax=50;

var

v: array[1..nmax] of integer;

i,j,n,posMenor,temp: integer;

begin

writeln('Digite um inteiro menor ou igual a ' ,nmax, ' : '); readln(n);

writeln('Digite ',n,' inteiros separados por espacos');

for i:=1 to n do read(v[i]);

for i:=1 to n-1 do begin

posMenor:=i;

for j:=i+1 to n do

if v[j] < v[posMenor] then posMenor := j;

if i <> posMenor then begin

temp := v[i];

v[i] := v[posMenor];

v[posMenor] := temp;

end;

end;

writeln;

for i:=1 to n do write(v[i]:4);

end.