Bonjour,
Je dois faire un quicksort en pascal et j'ai des erreurs, seulement, tout ceux que je trouve sur le net ne sont pas comme dans mon cours. Je pense que le plus simple c est que je vous montre le mien et vous nomme les erreurs.
program essai;
uses crt;
type nbre=array[1..10]of integer;
var deb,fin,indice,a:integer;
tab:nbre;
function quicksort(var limite,deb,fin:integer;tab:nbre):integer;
var pivot,i,aux:integer;
begin
i:=deb;
pivot:=tab[deb];
while limite<>i do
begin
if tab[i]<pivot then
begin
tab[i-1]:=tab[i];
i:=i+1;
end;
if tab[i]>pivot then
begin
aux:=tab[i];
tab[i]:=tab[limite];
tab[limite]:=aux;
end;
end;
tab[i]:=pivot;
quicksort:=(limite-1);
quicksort:=(limite+1);
end;
var limite,i:integer;
begin
clrscr;
writeln('Entrez les nombres');
begin
writeln('Entrez les nombres');
deb:=1;
fin:=1;
i:=1;
read(tab[i]);
while (tab[i]>0) or (i=10) do
begin
i:=i+1;
read(tab[i]);
fin:=fin+1
end;
limite:=fin;
quicksort(limite,deb,fin,tab);
end.
Mes erreurs sont aux récursives à "limite-1", à coup sur il le fera après pour le +1 et si j'enlève -1 pour voir si je n'ai pas une autre erreur sur cette ligne il m'inscrit type mismatch pour tab.
Merci à toute personne qui pourra m'aider.
Message édité par clochette71 le 21-10-2008 à 21:28:57