mirror of
https://github.com/Gustavo-E-D-Demarchi/dicionario.git
synced 2026-07-27 16:25:46 -03:00
versão 1.0.9
This commit is contained in:
parent
681923d442
commit
4c2ce9de76
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
+506
-260
@@ -1,305 +1,551 @@
|
|||||||
program pzim;
|
program pzim;
|
||||||
uses crt;
|
uses crt;
|
||||||
|
|
||||||
type
|
type
|
||||||
Tverbete = ^E_Dicionario;
|
Tverbete = ^E_Dicionario;
|
||||||
E_Dicionario = record
|
E_Dicionario = record
|
||||||
br : string; //portugues
|
br : string;
|
||||||
ing : string; // ingles
|
ing : string;
|
||||||
prox : Tverbete;
|
prox : Tverbete;
|
||||||
end;
|
|
||||||
|
|
||||||
Tlista = ^E_lista ;
|
|
||||||
E_lista = record
|
|
||||||
ant : Tlista ; //anterior
|
|
||||||
key : string;
|
|
||||||
dicionario : Tverbete ;
|
|
||||||
prox : Tlista ;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function verificar_palavra ( D : Tverbete ; P : string ) : boolean ;
|
|
||||||
var
|
|
||||||
sair : boolean ;
|
|
||||||
begin
|
|
||||||
if D = nil then
|
|
||||||
verificar_palavra := false
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
if D^.br = P then
|
|
||||||
verificar_palavra := true
|
|
||||||
else if D^.prox <> nil then
|
|
||||||
sair := false
|
|
||||||
else
|
|
||||||
sair := true
|
|
||||||
|
|
||||||
if sair then
|
|
||||||
verificar_palavra := false
|
|
||||||
else
|
|
||||||
verificar_palavra := verificar_palavra( D^.prox , P );
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function consultar ( T_lista : Tlista ; chave : string ) : Tlista ;
|
Tlista = ^E_lista;
|
||||||
var
|
E_lista = record
|
||||||
atual : Tlista ;
|
ant : Tlista;
|
||||||
|
key : string;
|
||||||
|
dicionario : Tverbete;
|
||||||
|
prox : Tlista;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function verificar_palavra ( D : Tverbete ; P : string ) : boolean ;
|
||||||
|
begin
|
||||||
|
if D = nil then
|
||||||
|
verificar_palavra := false
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if D^.br = P then
|
||||||
|
verificar_palavra := true
|
||||||
|
else
|
||||||
|
verificar_palavra := verificar_palavra( D^.prox , P );
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function consultar ( T_lista : Tlista ; chave : string ) : Tlista ;
|
||||||
|
var
|
||||||
|
atual : Tlista ;
|
||||||
|
begin
|
||||||
|
atual := T_lista ;
|
||||||
|
|
||||||
|
while ( atual <> nil ) and ( atual^.key < chave ) do
|
||||||
|
atual := atual^.prox ;
|
||||||
|
|
||||||
|
if ( atual <> nil ) and ( atual^.key = chave ) then
|
||||||
|
consultar := atual
|
||||||
|
else
|
||||||
|
consultar := nil ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function encontrar_lista (
|
||||||
|
T_lista : Tlista ;
|
||||||
|
palavra : string
|
||||||
|
) : Tlista ;
|
||||||
|
var
|
||||||
|
aux : Tlista ;
|
||||||
|
melhor : Tlista ;
|
||||||
|
begin
|
||||||
|
aux := T_lista ;
|
||||||
|
melhor := nil ;
|
||||||
|
|
||||||
|
while aux <> nil do
|
||||||
|
begin
|
||||||
|
if UpCase( palavra[1] ) >=
|
||||||
|
UpCase( aux^.key[1] ) then
|
||||||
|
begin
|
||||||
|
melhor := aux ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
aux := aux^.prox ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
encontrar_lista := melhor ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ler : string ;
|
||||||
|
var
|
||||||
|
temp : string ;
|
||||||
|
begin
|
||||||
|
write ( ' digite a palavra : ' ) ;
|
||||||
|
readln ( temp ) ;
|
||||||
|
ler := temp ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ler_int : integer ;
|
||||||
|
var
|
||||||
|
temp : integer ;
|
||||||
|
begin
|
||||||
|
write ( ' digite um numero : ' ) ;
|
||||||
|
readln ( temp ) ;
|
||||||
|
ler_int := temp ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function continuar : boolean ;
|
||||||
|
var
|
||||||
|
op : string ;
|
||||||
|
begin
|
||||||
|
write ( ' quer continuar ? (S / N) : ' ) ;
|
||||||
|
readln ( op ) ;
|
||||||
|
|
||||||
|
while ( op <> 'S' ) and ( op <> 's' ) and
|
||||||
|
( op <> 'N' ) and ( op <> 'n' ) do
|
||||||
|
begin
|
||||||
|
writeln ( ' opcao invalida ' ) ;
|
||||||
|
readln ( op ) ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if ( op = 'S' ) or ( op = 's' ) then
|
||||||
|
continuar := true
|
||||||
|
else
|
||||||
|
continuar := false ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure criar_lista ( var lista : Tlista ) ;
|
||||||
|
begin
|
||||||
|
lista := nil ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure adicionar_lista_direto (
|
||||||
|
var T_lista : Tlista ;
|
||||||
|
chave : string
|
||||||
|
) ;
|
||||||
|
var
|
||||||
|
novo , anterior , atual : Tlista ;
|
||||||
|
begin
|
||||||
|
new ( novo ) ;
|
||||||
|
|
||||||
|
novo^.key := chave ;
|
||||||
|
novo^.dicionario := nil ;
|
||||||
|
novo^.prox := nil ;
|
||||||
|
novo^.ant := nil ;
|
||||||
|
|
||||||
|
if T_lista = nil then
|
||||||
|
begin
|
||||||
|
T_lista := novo ;
|
||||||
|
end
|
||||||
|
else
|
||||||
begin
|
begin
|
||||||
atual := T_lista ;
|
atual := T_lista ;
|
||||||
|
anterior := nil ;
|
||||||
|
|
||||||
while ( atual <> nil ) and ( atual^.key < chave ) do
|
while ( atual <> nil ) and ( atual^.key < chave ) do
|
||||||
|
begin
|
||||||
|
anterior := atual ;
|
||||||
atual := atual^.prox ;
|
atual := atual^.prox ;
|
||||||
|
|
||||||
if ( atual <> nil ) and ( atual ^.key = chave) then
|
|
||||||
consultar := atual
|
|
||||||
else
|
|
||||||
consultar := nil ;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function ler : string ;
|
|
||||||
var
|
|
||||||
temp : string ;
|
|
||||||
begin
|
|
||||||
write (' digite a palavra :') ;
|
|
||||||
readln( temp ) ;
|
|
||||||
ler := temp ;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function ler_int : integer ;
|
|
||||||
var
|
|
||||||
temp : integer ;
|
|
||||||
begin
|
|
||||||
write (' digite um numero : ') ;
|
|
||||||
readln (temp) ;
|
|
||||||
ler_int := temp ;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function continuar : boolean ;
|
|
||||||
var
|
|
||||||
op : string ;
|
|
||||||
begin
|
|
||||||
write ( 'quer continuar ? (S / N)' ) ;
|
|
||||||
op := ler ;
|
|
||||||
while ( ( op <> 'S' ) or ( op <> 's' ) ) and ( ( op <> 'N') or ( op <> 'n') ) do
|
|
||||||
begin
|
|
||||||
writeln ('opcao invalida') ;
|
|
||||||
op := ler ;
|
|
||||||
end;
|
end;
|
||||||
if op = 'S' then
|
|
||||||
continuar := true
|
|
||||||
else
|
|
||||||
continuar := false ;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{
|
novo^.ant := anterior ;
|
||||||
function maior(a , b : string):boolean;
|
novo^.prox := atual ;
|
||||||
begin
|
|
||||||
maior := upcase(a) > upcase(b);
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Procedimentos \/ | /\ funçoes
|
|
||||||
|
|
||||||
procedure criar_lista ( var lista: Tlista );
|
if anterior <> nil then
|
||||||
begin
|
anterior^.prox := novo
|
||||||
lista := nil;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure adicionar_lista(var T_lista : Tlista );
|
|
||||||
var
|
|
||||||
novo , anterior , atual : Tlista ;
|
|
||||||
chave : string ;
|
|
||||||
begin
|
|
||||||
chave := ler ;
|
|
||||||
new (novo);
|
|
||||||
if novo = nil then
|
|
||||||
writeln ('memoria cheia')
|
|
||||||
else
|
else
|
||||||
|
T_lista := novo ;
|
||||||
|
|
||||||
|
if atual <> nil then
|
||||||
|
atual^.ant := novo ;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure adicionar_lista ( var T_lista : Tlista ) ;
|
||||||
|
var
|
||||||
|
chave : string ;
|
||||||
|
begin
|
||||||
|
chave := ler ;
|
||||||
|
adicionar_lista_direto ( T_lista , chave ) ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure inserir_ordenado_dicionario (
|
||||||
|
var dicionario : Tverbete ;
|
||||||
|
novo : Tverbete
|
||||||
|
) ;
|
||||||
|
var
|
||||||
|
aux_atual , aux_ant : Tverbete ;
|
||||||
|
begin
|
||||||
|
aux_atual := dicionario ;
|
||||||
|
aux_ant := nil ;
|
||||||
|
|
||||||
|
while ( aux_atual <> nil ) and
|
||||||
|
( aux_atual^.br < novo^.br ) do
|
||||||
|
begin
|
||||||
|
aux_ant := aux_atual ;
|
||||||
|
aux_atual := aux_atual^.prox ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
novo^.prox := aux_atual ;
|
||||||
|
|
||||||
|
if aux_ant = nil then
|
||||||
|
dicionario := novo
|
||||||
|
else
|
||||||
|
aux_ant^.prox := novo ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure redistribuir_verbetes (
|
||||||
|
var lista : Tlista
|
||||||
|
) ;
|
||||||
|
var
|
||||||
|
aux_l : Tlista ;
|
||||||
|
aux_d : Tverbete ;
|
||||||
|
|
||||||
|
todos , ultimo , prox_d : Tverbete ;
|
||||||
|
|
||||||
|
destino : Tlista ;
|
||||||
|
begin
|
||||||
|
todos := nil ;
|
||||||
|
ultimo := nil ;
|
||||||
|
|
||||||
|
aux_l := lista ;
|
||||||
|
|
||||||
|
while aux_l <> nil do
|
||||||
|
begin
|
||||||
|
aux_d := aux_l^.dicionario ;
|
||||||
|
|
||||||
|
aux_l^.dicionario := nil ;
|
||||||
|
|
||||||
|
while aux_d <> nil do
|
||||||
begin
|
begin
|
||||||
if T_lista = nil then
|
prox_d := aux_d^.prox ;
|
||||||
|
|
||||||
|
aux_d^.prox := nil ;
|
||||||
|
|
||||||
|
if todos = nil then
|
||||||
begin
|
begin
|
||||||
|
todos := aux_d ;
|
||||||
novo^.ant := nil ;
|
ultimo := aux_d ;
|
||||||
novo^.key := chave ;
|
|
||||||
novo^.dicionario := nil ;
|
|
||||||
novo^.prox := T_lista;
|
|
||||||
|
|
||||||
T_lista := novo ;
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
|
ultimo^.prox := aux_d ;
|
||||||
atual := T_lista ;
|
ultimo := aux_d ;
|
||||||
anterior := nil ;
|
|
||||||
|
|
||||||
while (atual <> nil) and (atual^.key < chave) do
|
|
||||||
begin
|
|
||||||
anterior := atual;
|
|
||||||
atual := atual^.prox;
|
|
||||||
end;
|
|
||||||
|
|
||||||
novo^.ant := anterior ;
|
|
||||||
novo^.prox := atual ;
|
|
||||||
novo^.key := chave ;
|
|
||||||
novo^.dicionario := nil ;
|
|
||||||
|
|
||||||
if anterior <> nil then
|
|
||||||
anterior^.prox := novo
|
|
||||||
else
|
|
||||||
T_lista := novo ;
|
|
||||||
|
|
||||||
if atual <> nil then
|
|
||||||
atual^.ant := novo ;
|
|
||||||
|
|
||||||
end;
|
end;
|
||||||
end;
|
|
||||||
end;
|
aux_d := prox_d ;
|
||||||
|
end;
|
||||||
procedure adicionar_dicionario( var lista : Tlista );
|
|
||||||
var
|
aux_l := aux_l^.prox ;
|
||||||
aux_l : Tlista ;
|
end;
|
||||||
aux , aux_atual , aux_ant : Tverbete ;
|
|
||||||
chave , chave_p , chave_i , op : string ;
|
aux_d := todos ;
|
||||||
//portugues /\ /\ inglês
|
|
||||||
existe : boolean ;
|
while aux_d <> nil do
|
||||||
begin
|
begin
|
||||||
writeln (' digite a chave que vc quer : ') ;
|
prox_d := aux_d^.prox ;
|
||||||
chave := ler ;
|
|
||||||
|
|
||||||
aux_l := consultar (lista , chave );
|
|
||||||
|
|
||||||
if aux_l = nil then
|
destino := encontrar_lista (
|
||||||
|
lista ,
|
||||||
|
aux_d^.br
|
||||||
|
) ;
|
||||||
|
|
||||||
|
aux_d^.prox := nil ;
|
||||||
|
|
||||||
|
if destino <> nil then
|
||||||
begin
|
begin
|
||||||
writeln ('nao exite esta chave quer adicionar ? ');
|
inserir_ordenado_dicionario (
|
||||||
|
destino^.dicionario ,
|
||||||
if continuar then
|
aux_d
|
||||||
begin
|
) ;
|
||||||
adicionar_lista ( lista );
|
end;
|
||||||
aux_l := consultar (lista , chave) ;
|
|
||||||
end;
|
aux_d := prox_d ;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure adicionar_dicionario ( var lista : Tlista ) ;
|
||||||
|
var
|
||||||
|
aux_l : Tlista ;
|
||||||
|
aux : Tverbete ;
|
||||||
|
chave_p , chave_i : string ;
|
||||||
|
existe : boolean ;
|
||||||
|
begin
|
||||||
|
writeln ( ' digite a palavra em portugues : ' ) ;
|
||||||
|
chave_p := ler ;
|
||||||
|
|
||||||
|
writeln ( ' digite a traducao em ingles : ' ) ;
|
||||||
|
chave_i := ler ;
|
||||||
|
|
||||||
|
aux_l := encontrar_lista ( lista , chave_p ) ;
|
||||||
|
|
||||||
|
if aux_l = nil then
|
||||||
|
begin
|
||||||
|
writeln ( ' nenhuma chave encontrada ' ) ;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
existe := verificar_palavra (
|
||||||
|
aux_l^.dicionario ,
|
||||||
|
chave_p
|
||||||
|
) ;
|
||||||
|
|
||||||
|
if existe then
|
||||||
|
begin
|
||||||
|
writeln ( ' palavra ja existe ' ) ;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
chave_p := ler ;
|
new ( aux ) ;
|
||||||
chave_i := ler ;
|
|
||||||
|
|
||||||
new(aux);
|
aux^.br := chave_p ;
|
||||||
|
aux^.ing := chave_i ;
|
||||||
|
aux^.prox := nil ;
|
||||||
|
|
||||||
if aux_l^.dicionario = nil then //adicionar o primeiro verbete
|
inserir_ordenado_dicionario (
|
||||||
|
aux_l^.dicionario ,
|
||||||
|
aux
|
||||||
|
) ;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure consultar_lista ( T_lista : Tlista ) ;
|
||||||
|
var
|
||||||
|
aux : Tlista ;
|
||||||
|
begin
|
||||||
|
aux := T_lista ;
|
||||||
|
|
||||||
|
if aux = nil then
|
||||||
|
begin
|
||||||
|
writeln ( ' lista vazia ' ) ;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
while aux <> nil do
|
||||||
|
begin
|
||||||
|
writeln ( ' chave : ' , aux^.key ) ;
|
||||||
|
aux := aux^.prox ;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure consultar_dicionario ( T_lista : Tlista ) ;
|
||||||
|
var
|
||||||
|
aux_l : Tlista ;
|
||||||
|
aux_d : Tverbete ;
|
||||||
|
palavra : string ;
|
||||||
|
encontrou : boolean ;
|
||||||
|
begin
|
||||||
|
writeln ( ' digite a palavra : ' ) ;
|
||||||
|
palavra := ler ;
|
||||||
|
|
||||||
|
aux_l := T_lista ;
|
||||||
|
encontrou := false ;
|
||||||
|
|
||||||
|
while ( aux_l <> nil ) and ( not encontrou ) do
|
||||||
|
begin
|
||||||
|
aux_d := aux_l^.dicionario ;
|
||||||
|
|
||||||
|
while ( aux_d <> nil ) and ( not encontrou ) do
|
||||||
|
begin
|
||||||
|
if aux_d^.br = palavra then
|
||||||
|
begin
|
||||||
|
writeln ;
|
||||||
|
writeln ( ' chave : ' , aux_l^.key ) ;
|
||||||
|
writeln (
|
||||||
|
aux_d^.br ,
|
||||||
|
' = ' ,
|
||||||
|
aux_d^.ing
|
||||||
|
) ;
|
||||||
|
|
||||||
|
encontrou := true ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
aux_d := aux_d^.prox ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
aux_l := aux_l^.prox ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if not encontrou then
|
||||||
|
writeln ( ' palavra nao encontrada ' ) ;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure consultar_geral ( T_lista : Tlista ) ;
|
||||||
|
var
|
||||||
|
aux_l : Tlista ;
|
||||||
|
aux_d : Tverbete ;
|
||||||
|
begin
|
||||||
|
aux_l := T_lista ;
|
||||||
|
|
||||||
|
if aux_l = nil then
|
||||||
|
begin
|
||||||
|
writeln ( ' lista vazia ' ) ;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
while aux_l <> nil do
|
||||||
|
begin
|
||||||
|
writeln ;
|
||||||
|
writeln ( ' chave : ' , aux_l^.key ) ;
|
||||||
|
|
||||||
|
aux_d := aux_l^.dicionario ;
|
||||||
|
|
||||||
|
if aux_d = nil then
|
||||||
|
begin
|
||||||
|
writeln ( ' dicionario vazio ' ) ;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
while aux_d <> nil do
|
||||||
begin
|
begin
|
||||||
aux^.br := chave_p ;
|
writeln (
|
||||||
aux^.ing := chave_i ;
|
' ',
|
||||||
aux^.prox := aux_l^.dicionario ;
|
aux_d^.br ,
|
||||||
aux_l^.dicionario := aux ;
|
' = ' ,
|
||||||
end
|
aux_d^.ing
|
||||||
|
) ;
|
||||||
|
|
||||||
else
|
aux_d := aux_d^.prox ;
|
||||||
begin
|
end;
|
||||||
existe := verificar_palavra( aux_l^.dicionario , chave_p); // verificar se a palavra ja existe no dicionario
|
end;
|
||||||
|
|
||||||
if not existe then
|
aux_l := aux_l^.prox ;
|
||||||
begin
|
end;
|
||||||
aux_ant := nil ;
|
end;
|
||||||
aux_atual := aux_l^.dicionario ; // apontar para o primeiro verbete do dicionario da chave
|
end;
|
||||||
|
|
||||||
while (aux_atual <> nil) and ( aux_atual^.br < chave_p ) do
|
procedure remover_dicionario (
|
||||||
begin
|
T_lista : Tlista
|
||||||
aux_ant := aux_atual ;
|
) ;
|
||||||
aux_atual := aux_atual^.prox ;
|
var
|
||||||
end;
|
aux_l : Tlista ;
|
||||||
|
aux_d , ant_d : Tverbete ;
|
||||||
|
palavra : string ;
|
||||||
|
achou : boolean ;
|
||||||
|
begin
|
||||||
|
writeln ( ' digite a palavra : ' ) ;
|
||||||
|
palavra := ler ;
|
||||||
|
|
||||||
if aux_ant = nil then
|
aux_l := T_lista ;
|
||||||
begin
|
achou := false ;
|
||||||
aux^.br := chave_p;
|
|
||||||
aux^.ing := chave_i;
|
|
||||||
aux^.prox := aux_atual;
|
|
||||||
|
|
||||||
aux_l^.dicionario := aux;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
aux_ant^.prox := aux ;
|
|
||||||
aux^.br := chave_p ;
|
|
||||||
aux^.ing := chave_i ;
|
|
||||||
aux^.prox := aux_atual;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end
|
while ( aux_l <> nil ) and ( not achou ) do
|
||||||
|
begin
|
||||||
|
aux_d := aux_l^.dicionario ;
|
||||||
|
ant_d := nil ;
|
||||||
|
|
||||||
|
while ( aux_d <> nil ) and ( not achou ) do
|
||||||
|
begin
|
||||||
|
if aux_d^.br = palavra then
|
||||||
|
begin
|
||||||
|
if ant_d = nil then
|
||||||
|
aux_l^.dicionario := aux_d^.prox
|
||||||
else
|
else
|
||||||
write (' esta palavra ja existe no dicionario ') ;
|
ant_d^.prox := aux_d^.prox ;
|
||||||
|
|
||||||
|
dispose ( aux_d ) ;
|
||||||
|
|
||||||
|
achou := true ;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
ant_d := aux_d ;
|
||||||
|
aux_d := aux_d^.prox ;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure consultar_lista ( T_lista : Tlista );
|
|
||||||
var
|
|
||||||
aux : tlista ;
|
|
||||||
op : string ;
|
|
||||||
begin
|
|
||||||
write ( ' vc quer consutar quer consultar qual palavra ? ') ;
|
|
||||||
op := ler ;
|
|
||||||
|
|
||||||
aux := consultar( T_lista , op );
|
|
||||||
|
|
||||||
if aux = nil then
|
|
||||||
writeln (' palavra nao encontrada ')
|
|
||||||
else
|
|
||||||
write (' palavra encontrada :' , aux^.key );
|
|
||||||
|
|
||||||
|
aux_l := aux_l^.prox ;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure consultar_dicionario (T_lista : Tlista );
|
if achou then
|
||||||
var
|
writeln ( ' palavra removida ' )
|
||||||
aux : Tlista ;
|
else
|
||||||
op : string ;
|
writeln ( ' palavra nao encontrada ' ) ;
|
||||||
begin
|
end;
|
||||||
end;
|
|
||||||
|
|
||||||
procedure menu ( var lista : Tlista );
|
procedure remover_lista (
|
||||||
var
|
var lista : Tlista
|
||||||
op : integer ;
|
) ;
|
||||||
begin
|
var
|
||||||
|
aux , ant : Tlista ;
|
||||||
writeln (' 1 : adicionar_lista ') ;
|
chave : string ;
|
||||||
writeln (' 2 : adicionar_dicionario ') ;
|
|
||||||
writeln (' 3 : consultar_lista ') ;
|
|
||||||
writeln (' 4 : consultar_dicionario ') ;
|
|
||||||
writeln (' 5 : consultar_geral ') ;
|
|
||||||
writeln (' 6 : remover_lista ') ;
|
|
||||||
writeln (' 7 : remover_dicionario ') ;
|
|
||||||
writeln (' 0 : sair ') ;
|
|
||||||
op := ler_int ;
|
|
||||||
case op of
|
|
||||||
1 : adicionar_lista(lista) ;
|
|
||||||
2 : adicionar_dicionario (lista) ;
|
|
||||||
3 : consultar_lista (lista) ;
|
|
||||||
4 : consultar_dicionario (lista) ;
|
|
||||||
5 : consultar_geral (lista , dicionario) ;
|
|
||||||
6 :
|
|
||||||
begin
|
|
||||||
remover_lista (lista) ;
|
|
||||||
adicionar_dicionario (lista) ;
|
|
||||||
end;
|
|
||||||
7 : remover_dicionario (dicionario) ;
|
|
||||||
0 : writeln (' vc saiu do sistema ') ;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
write (' opcao invalida digite novamente : ') ;
|
|
||||||
|
|
||||||
end;
|
|
||||||
var
|
|
||||||
lista : Tlista ;
|
|
||||||
|
|
||||||
i : integer ;
|
|
||||||
begin
|
begin
|
||||||
i := 1;
|
writeln ( ' digite a chave : ' ) ;
|
||||||
criar_lista (lista) ;
|
chave := ler ;
|
||||||
while ( i = 1 ) do
|
|
||||||
|
aux := lista ;
|
||||||
|
ant := nil ;
|
||||||
|
|
||||||
|
while ( aux <> nil ) and
|
||||||
|
( aux^.key <> chave ) do
|
||||||
begin
|
begin
|
||||||
menu (lista);
|
ant := aux ;
|
||||||
if not continuar then
|
aux := aux^.prox ;
|
||||||
i := 0;
|
|
||||||
end;
|
end;
|
||||||
end.
|
|
||||||
|
if aux = nil then
|
||||||
|
begin
|
||||||
|
writeln ( ' chave nao encontrada ' ) ;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if ant = nil then
|
||||||
|
lista := aux^.prox
|
||||||
|
else
|
||||||
|
ant^.prox := aux^.prox ;
|
||||||
|
|
||||||
|
if aux^.prox <> nil then
|
||||||
|
aux^.prox^.ant := ant ;
|
||||||
|
|
||||||
|
dispose ( aux ) ;
|
||||||
|
|
||||||
|
redistribuir_verbetes ( lista ) ;
|
||||||
|
|
||||||
|
writeln ( ' chave removida ' ) ;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure menu ( var lista : Tlista ; var j : integer ) ;
|
||||||
|
var
|
||||||
|
op : integer ;
|
||||||
|
begin
|
||||||
|
writeln ;
|
||||||
|
writeln ( ' 1 - adicionar lista ' ) ;
|
||||||
|
writeln ( ' 2 - adicionar dicionario ' ) ;
|
||||||
|
writeln ( ' 3 - consultar lista ' ) ;
|
||||||
|
writeln ( ' 4 - consultar dicionario ' ) ;
|
||||||
|
writeln ( ' 5 - consultar geral ' ) ;
|
||||||
|
writeln ( ' 6 - remover lista ' ) ;
|
||||||
|
writeln ( ' 7 - remover dicionario ' ) ;
|
||||||
|
writeln ( ' 0 - sair ' ) ;
|
||||||
|
|
||||||
|
op := ler_int ;
|
||||||
|
|
||||||
|
case op of
|
||||||
|
1 : adicionar_lista ( lista ) ;
|
||||||
|
2 : adicionar_dicionario ( lista ) ;
|
||||||
|
3 : consultar_lista ( lista ) ;
|
||||||
|
4 : consultar_dicionario ( lista ) ;
|
||||||
|
5 : consultar_geral ( lista ) ;
|
||||||
|
6 : remover_lista ( lista ) ;
|
||||||
|
7 : remover_dicionario ( lista ) ;
|
||||||
|
|
||||||
|
0 : begin
|
||||||
|
writeln ( ' saindo... ' ) ;
|
||||||
|
j := 0;
|
||||||
|
end;
|
||||||
|
else
|
||||||
|
writeln ( ' opcao invalida ' ) ;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
lista : Tlista ;
|
||||||
|
i : integer ;
|
||||||
|
|
||||||
|
begin
|
||||||
|
i := 1 ;
|
||||||
|
|
||||||
|
criar_lista ( lista ) ;
|
||||||
|
|
||||||
|
while i = 1 do
|
||||||
|
begin
|
||||||
|
menu ( lista , i ) ;
|
||||||
|
end;
|
||||||
|
end.
|
||||||
|
|||||||
Reference in New Issue
Block a user