Aide pr l'algorithme de hachage
Résolu/Fermé
sfrsky
Messages postés
125
Date d'inscription
mardi 15 mai 2007
Statut
Membre
Dernière intervention
20 novembre 2014
-
23 févr. 2008 à 03:40
sfrsky Messages postés 125 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 20 novembre 2014 - 11 mars 2008 à 20:16
sfrsky Messages postés 125 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 20 novembre 2014 - 11 mars 2008 à 20:16
A voir également:
- Aide pr l'algorithme de hachage
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Code ascii algorithme - Guide
- Algorithme maximum de 3 nombres ✓ - Forum Algorithmes / Méthodes
- Ecrire un algorithme qui permet de resoudre ax²+bx+c=0 - Forum Programmation
2 réponses
sfrsky
Messages postés
125
Date d'inscription
mardi 15 mai 2007
Statut
Membre
Dernière intervention
20 novembre 2014
18
23 févr. 2008 à 18:18
23 févr. 2008 à 18:18
bonsoir;
quelqu'un peut m'aidé??? SVP
quelqu'un peut m'aidé??? SVP
sfrsky
Messages postés
125
Date d'inscription
mardi 15 mai 2007
Statut
Membre
Dernière intervention
20 novembre 2014
18
11 mars 2008 à 20:16
11 mars 2008 à 20:16
bonsoir a tous,
finalement j'ai regler le probléme et le programme pascal correct est
program chainage_ouvert;
uses wincrt;
const n=5;
type cellule=record
cle:string;
link:integer;
end;
var v:array[0..n-1]of integer;
t:array[0..n-1]of cellule;
mot:string;
i,k,h,l:integer;
function hach(ch:string):integer;
var i,som:integer;
begin
som:=0;
for i:=1 to length(ch) do
som:=som+ord(ch[i]);
hach:=som mod n;
end;
procedure insert(var i:integer;y:integer);
var j,z,u:integer;
begin
if v[y]=-1 then
begin
t[i].cle:=mot;
v[y]:=i;
i:=i+1;
end
else
begin
if t[v[y]].cle=mot then
writeln('ce mot a deja ete saisie:')
else
begin
if t[v[y]].link=-1 then
begin
t[i].cle:=mot;
t[v[y]].link:=i;
i:=i+1;
end
else
begin
j:=v[y];
z:=1;
u:=1;
while u<>0 do
if (t[j].link<>-1) and (z=1) then
if t[j].cle<>mot then
j:=t[j].link
else
begin
writeln('ce mot existe deja:');
z:=0;
u:=0;
end
else
u:=0;
end;
if z=1 then
begin
if t[j].cle<>mot then
begin
t[i].cle:=mot;
t[j].link:=i;
i:=i+1;
end
else
writeln('ce mot existe deja:');
end;
end;
end;
end;
BEGIN
h:=0;
for h:=0 to n-1 do
begin
v[h]:=-1;
t[h].link:=-1;
end;
writeln(' PROGRAMME HACHAGE');
writeln;writeln;writeln;
i:=0;
while i<n do
begin
writeln('donnez un mot:');
readln(mot);
if mot<>'' then
begin
k:=hach(mot);
insert(i,k);
end
else
begin
writeln('le grogramme ne calcule pas son code ASCII,donnez un autre mot:');
readln(mot);
end;
end;
writeln;
writeln(' affichage de la table remplis,sans repetition de mots');
l:=0;
while l<n do
begin
writeln(t[l].cle);
l:=l+1;
end;
writeln(' fin du programme hachage ');
END.
finalement j'ai regler le probléme et le programme pascal correct est
program chainage_ouvert;
uses wincrt;
const n=5;
type cellule=record
cle:string;
link:integer;
end;
var v:array[0..n-1]of integer;
t:array[0..n-1]of cellule;
mot:string;
i,k,h,l:integer;
function hach(ch:string):integer;
var i,som:integer;
begin
som:=0;
for i:=1 to length(ch) do
som:=som+ord(ch[i]);
hach:=som mod n;
end;
procedure insert(var i:integer;y:integer);
var j,z,u:integer;
begin
if v[y]=-1 then
begin
t[i].cle:=mot;
v[y]:=i;
i:=i+1;
end
else
begin
if t[v[y]].cle=mot then
writeln('ce mot a deja ete saisie:')
else
begin
if t[v[y]].link=-1 then
begin
t[i].cle:=mot;
t[v[y]].link:=i;
i:=i+1;
end
else
begin
j:=v[y];
z:=1;
u:=1;
while u<>0 do
if (t[j].link<>-1) and (z=1) then
if t[j].cle<>mot then
j:=t[j].link
else
begin
writeln('ce mot existe deja:');
z:=0;
u:=0;
end
else
u:=0;
end;
if z=1 then
begin
if t[j].cle<>mot then
begin
t[i].cle:=mot;
t[j].link:=i;
i:=i+1;
end
else
writeln('ce mot existe deja:');
end;
end;
end;
end;
BEGIN
h:=0;
for h:=0 to n-1 do
begin
v[h]:=-1;
t[h].link:=-1;
end;
writeln(' PROGRAMME HACHAGE');
writeln;writeln;writeln;
i:=0;
while i<n do
begin
writeln('donnez un mot:');
readln(mot);
if mot<>'' then
begin
k:=hach(mot);
insert(i,k);
end
else
begin
writeln('le grogramme ne calcule pas son code ASCII,donnez un autre mot:');
readln(mot);
end;
end;
writeln;
writeln(' affichage de la table remplis,sans repetition de mots');
l:=0;
while l<n do
begin
writeln(t[l].cle);
l:=l+1;
end;
writeln(' fin du programme hachage ');
END.