Tri par insertion d'une liste
Fermé
braham2
Messages postés
87
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
17 octobre 2013
-
12 janv. 2010 à 09:22
braham2 Messages postés 87 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 17 octobre 2013 - 5 févr. 2010 à 09:41
braham2 Messages postés 87 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 17 octobre 2013 - 5 févr. 2010 à 09:41
A voir également:
- Tri par insertion d'une liste
- Liste déroulante excel - Guide
- Excel trier par ordre croissant chiffre - Guide
- Liste déroulante en cascade - Guide
- Insertion signature word - Guide
- Insertion sommaire word - Guide
2 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 janv. 2010 à 09:25
12 janv. 2010 à 09:25
braham2
Messages postés
87
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
17 octobre 2013
7
5 févr. 2010 à 09:41
5 févr. 2010 à 09:41
salut et bjr j'ai fais deux algorithme un est marche très bien mais avec d'autre methode et le deuxiéme non
voila le premier programme qui n'est pas marché :
program ansire;
type pnt=^element;
element=record
val:integer;
suiv:pnt;
end;
var
n,v:integer;
l,r,k:pnt;
procedure creation(var l:pnt ;var c:integer);
var
p:pnt;
bool:boolean;
v:integer;
begin
l:=nil;
c:=0;
bool:=true;
writeln;
writeln(' entre la list lorsque vous avez termine tape sur 0');
while bool=true do
begin
c:=c+1;
write(' ');
readln(v);
if v=0 then begin
bool:=false
end
else begin
new(p);
p^.val:=v;
p^.suiv:=l;
l:=p;
end;
end;
end;
procedure affiche(l:pnt);
var
p:pnt;
begin
writeln(' la liste est le suivant');
p:=l;
while p<>nil do
begin
writeln(' ',p^.val);
p:=p^.suiv;
end;
end;
begin
creation(l,n);
writeln('donne la val de pnt qui v.ins ');
readln(v);
new(k);
k^.val:=v;
r:=l;
if( r^.suiv=l) then
begin
r^.suiv:=k;
end
else begin
l:=k;
end;
k^.suiv:=r^.suiv;
affiche(l);
readln;
end.
et voila le deuxiéme qu'il fonctionne :
Program Inserer_Un_Element_Liste_Contigue;
Const N=10;
Type Element = Integer;
Tableau = Array[1 ..N] of Element;
Var Liste : Tableau;
Elt : Element;
{Procédure de création de la liste}
Procedure Creation (Var L: Tableau);
Var J : Integer;
Begin
For J:=1 to N-1 do
Begin
Writeln;
Write(' Elément n? ', J,' : ');
readln(L[J]);
While L[J] = 0 do
Begin
Write(' L"élément doit être supérieur à zéro (0) : ');
Readln(L[J]);
End;
End;
End;
{Procédure qui trie la liste}
Procedure Tri(var L3:Tableau);
Var A,B:Integer;
Trouve: Boolean;
Begin
A:=1;
While A <= N-1 do
Begin
B := A + 1;
While B <= N-1 do
Begin
If L3[A] > L3[B] then
Begin
Elt := L3[A];
L3[A] := L3[B];
L3[B] := Elt;
B := B + 1;
End
Else
Begin
B := B + 1;
End;
End;
A := A + 1;
End;
End;
{Procédure qui affiche la liste après le tri}
Procedure Affiche (L2: Tableau);
Var I, K: Integer;
Begin
Write(' ');
For I:=1 to N do
Begin
Write(L2[I],' | ');
End;
End;
{Procédure qui insère un élément en respectant l’ordre de la liste}
Procedure Insertion (var L1: Tableau);
Var I : Integer;
Tete, Elem : Element;
Trouve : Boolean;
{Procédure qui crée un espace vide pour l’insertion d’un élément}
Procedure Espacement(I: integer);
Var H: Integer;
Begin
For H:= N Downto I+1 do
Begin
L1[H] := L1[H-1];
End;
End;
Begin
Writeln; Writeln; Writeln;
Write(' Donner l"élément à insérer dans la liste: ');
Readln(Elem);
I:=1;
While (I <= N) and (Trouve = False) do
Begin
If (Elem > L1[I]) and (L1[I] <> 0)then
Begin
Trouve:=False;
I := I + 1;
End
Else
Begin
Trouve:= true;
If I = 1 then
Begin
Espacement(I);
L1[I]:=Elem;
End
Else
If I = N then
Begin
L1[I]:= Elem;
End
Else
Begin
Espacement(I);
L1[I]:=Elem;
End;
End;
End;
End;
BEGIN { PROGRAMME PRINCIPAL }
Creation (Liste);
Writeln; Writeln; Writeln;
Writeln(' LES ELEMENTS DE LA LISTE AVANT L"INSERTION');
Writeln;
Tri(Liste);
Affiche(Liste);
Insertion(Liste);
Writeln;
Writeln(' LES ELEMENTS DE LA LISTE APRES L"INSERTION ');
Writeln;
Affiche (Liste);
Readln;
END.
voila le premier programme qui n'est pas marché :
program ansire;
type pnt=^element;
element=record
val:integer;
suiv:pnt;
end;
var
n,v:integer;
l,r,k:pnt;
procedure creation(var l:pnt ;var c:integer);
var
p:pnt;
bool:boolean;
v:integer;
begin
l:=nil;
c:=0;
bool:=true;
writeln;
writeln(' entre la list lorsque vous avez termine tape sur 0');
while bool=true do
begin
c:=c+1;
write(' ');
readln(v);
if v=0 then begin
bool:=false
end
else begin
new(p);
p^.val:=v;
p^.suiv:=l;
l:=p;
end;
end;
end;
procedure affiche(l:pnt);
var
p:pnt;
begin
writeln(' la liste est le suivant');
p:=l;
while p<>nil do
begin
writeln(' ',p^.val);
p:=p^.suiv;
end;
end;
begin
creation(l,n);
writeln('donne la val de pnt qui v.ins ');
readln(v);
new(k);
k^.val:=v;
r:=l;
if( r^.suiv=l) then
begin
r^.suiv:=k;
end
else begin
l:=k;
end;
k^.suiv:=r^.suiv;
affiche(l);
readln;
end.
et voila le deuxiéme qu'il fonctionne :
Program Inserer_Un_Element_Liste_Contigue;
Const N=10;
Type Element = Integer;
Tableau = Array[1 ..N] of Element;
Var Liste : Tableau;
Elt : Element;
{Procédure de création de la liste}
Procedure Creation (Var L: Tableau);
Var J : Integer;
Begin
For J:=1 to N-1 do
Begin
Writeln;
Write(' Elément n? ', J,' : ');
readln(L[J]);
While L[J] = 0 do
Begin
Write(' L"élément doit être supérieur à zéro (0) : ');
Readln(L[J]);
End;
End;
End;
{Procédure qui trie la liste}
Procedure Tri(var L3:Tableau);
Var A,B:Integer;
Trouve: Boolean;
Begin
A:=1;
While A <= N-1 do
Begin
B := A + 1;
While B <= N-1 do
Begin
If L3[A] > L3[B] then
Begin
Elt := L3[A];
L3[A] := L3[B];
L3[B] := Elt;
B := B + 1;
End
Else
Begin
B := B + 1;
End;
End;
A := A + 1;
End;
End;
{Procédure qui affiche la liste après le tri}
Procedure Affiche (L2: Tableau);
Var I, K: Integer;
Begin
Write(' ');
For I:=1 to N do
Begin
Write(L2[I],' | ');
End;
End;
{Procédure qui insère un élément en respectant l’ordre de la liste}
Procedure Insertion (var L1: Tableau);
Var I : Integer;
Tete, Elem : Element;
Trouve : Boolean;
{Procédure qui crée un espace vide pour l’insertion d’un élément}
Procedure Espacement(I: integer);
Var H: Integer;
Begin
For H:= N Downto I+1 do
Begin
L1[H] := L1[H-1];
End;
End;
Begin
Writeln; Writeln; Writeln;
Write(' Donner l"élément à insérer dans la liste: ');
Readln(Elem);
I:=1;
While (I <= N) and (Trouve = False) do
Begin
If (Elem > L1[I]) and (L1[I] <> 0)then
Begin
Trouve:=False;
I := I + 1;
End
Else
Begin
Trouve:= true;
If I = 1 then
Begin
Espacement(I);
L1[I]:=Elem;
End
Else
If I = N then
Begin
L1[I]:= Elem;
End
Else
Begin
Espacement(I);
L1[I]:=Elem;
End;
End;
End;
End;
BEGIN { PROGRAMME PRINCIPAL }
Creation (Liste);
Writeln; Writeln; Writeln;
Writeln(' LES ELEMENTS DE LA LISTE AVANT L"INSERTION');
Writeln;
Tri(Liste);
Affiche(Liste);
Insertion(Liste);
Writeln;
Writeln(' LES ELEMENTS DE LA LISTE APRES L"INSERTION ');
Writeln;
Affiche (Liste);
Readln;
END.
5 févr. 2010 à 09:14
5 févr. 2010 à 09:19
Ben montres-nous déjà ce que tu as fait...