Programme de tri qui ne marche pas? help..
Résolu
SindaM
Messages postés
43
Statut
Membre
-
Mins Messages postés 45 Statut Membre -
Mins Messages postés 45 Statut Membre -
Bonjour,
voila ce ke g écrit(g utilisé la méthode de tri par sélection)
mais ca ne s'exécute pas correctement ( ca donne un tab non trié)
program tableau;
uses wincrt;
type tab=array [1..100] of integer;
var i,ppm,n,k:integer;t:tab;
procedure remplissage (var t:tab; var n:integer);
var i: integer;
begin
repeat writeln ('donner le nombre de cases');
readln (n);
until n>=0;
for i:= 1 to n do
begin
writeln('donner t[',i,']');
readln (t[i]);
end;
end;
procedure tri (var t:tab;var n:integer);
var i,ppm:integer;
procedure permut (var x,y:integer);
var aux:integer;
begin
aux:= x;
x:=y ;
y:= aux ;
end;
function posmin (t:tab;n:integer):integer;
var i,j,pm:integer;
begin
pm:=i;
for j:= i+1 to n do
begin
if t[j]< t[pm]
then pm:=j;
end;
posmin:= pm;
end;
begin
for k:=1 to n-1 do
ppm:= posmin (t,n);
if t[i]<> t[ppm] then permut (t[i],t[ppm]);
end;
begin
remplissage (t,n);
tri (t,n);
for i:= 1 to n do
write(t[i],' ');
end.
merci de m'aider a trouver ce qui cloche
voila ce ke g écrit(g utilisé la méthode de tri par sélection)
mais ca ne s'exécute pas correctement ( ca donne un tab non trié)
program tableau;
uses wincrt;
type tab=array [1..100] of integer;
var i,ppm,n,k:integer;t:tab;
procedure remplissage (var t:tab; var n:integer);
var i: integer;
begin
repeat writeln ('donner le nombre de cases');
readln (n);
until n>=0;
for i:= 1 to n do
begin
writeln('donner t[',i,']');
readln (t[i]);
end;
end;
procedure tri (var t:tab;var n:integer);
var i,ppm:integer;
procedure permut (var x,y:integer);
var aux:integer;
begin
aux:= x;
x:=y ;
y:= aux ;
end;
function posmin (t:tab;n:integer):integer;
var i,j,pm:integer;
begin
pm:=i;
for j:= i+1 to n do
begin
if t[j]< t[pm]
then pm:=j;
end;
posmin:= pm;
end;
begin
for k:=1 to n-1 do
ppm:= posmin (t,n);
if t[i]<> t[ppm] then permut (t[i],t[ppm]);
end;
begin
remplissage (t,n);
tri (t,n);
for i:= 1 to n do
write(t[i],' ');
end.
merci de m'aider a trouver ce qui cloche
A voir également:
- Programme de tri qui ne marche pas? help..
- Comment faire un tri personnalisé sur excel - Guide
- Programme demarrage windows - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Logiciel tri photo - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
3 réponses
Bizarrement, ton code me parait illisible, enfin bon il faut le mettre entre les balises "code" pour que ce soit lisible. :) .
C'est normalement déjà achement mieux O:)
Par contre, les noms de variables qui ne veulent rien dire, c'est tout sauf évident à lire. :)
Euh dans posmin, tu as déclaré i alors qu'elle est déjà instancié dans tri. La par contre si tu la redéclares tu vas te retrouver à 0 et donc rescanner le tableau à chaque fois.
Mais j'ai vraiment un doute.
Tu devrais au moins changer tes noms de variables et chercher à expliquer comment tu penses ton code. En gardant les noms des variables identiques, tu risques juste de te paumer dans tes variables.
C'est normalement déjà achement mieux O:)
procedure tri (var t:tab;var n:integer); var i,ppm:integer; procedure permut (var x,y:integer); var aux:integer; begin aux:= x; x:=y ; y:= aux ; end; function posmin (t:tab;n:integer):integer; var i,j,pm:integer; begin pm:=i; for j:= i+1 to n do begin if t[j]< t[pm] then pm:=j; end; posmin:= pm; end; begin for k:=1 to n-1 do ppm:= posmin (t,n); if t[i]<> t[ppm] then permut (t[i],t[ppm]); end; end; begin remplissage (t,n); tri (t,n); for i:= 1 to n do write(t[i],' '); end.
Par contre, les noms de variables qui ne veulent rien dire, c'est tout sauf évident à lire. :)
Euh dans posmin, tu as déclaré i alors qu'elle est déjà instancié dans tri. La par contre si tu la redéclares tu vas te retrouver à 0 et donc rescanner le tableau à chaque fois.
Mais j'ai vraiment un doute.
Tu devrais au moins changer tes noms de variables et chercher à expliquer comment tu penses ton code. En gardant les noms des variables identiques, tu risques juste de te paumer dans tes variables.
bon voila j'ai enlevé les variables locales que j'avais déjà déclaré en tant que variables globales et ça donne ça:
program tableau;
uses wincrt;
type tab=array [1..100] of integer;
var i,ppm,n,k:integer;t:tab;
procedure remplissage (var t:tab; var n:integer);
begin
repeat writeln ('donner le nombre de cases');
readln (n);
until n>=0;
for i:= 1 to n do
begin
writeln('donner t[',i,']');
readln (t[i]);
end;
end;
procedure triselection (var t:tab;var n:integer);
procedure permut (var x,y:integer);
var aux:integer;
begin
aux:= x;
x:=y ;
y:= aux ;
end;
function posmin (t:tab;n:integer):integer;
var j,pm:integer;
begin
pm:=i;
for j:= i+1 to n do
begin
if t[j]< t[pm]
then pm:=j;
end;
posmin:= pm;
end;
begin
for k:=1 to n-1 do
ppm:= posmin (t,n);
if t[i]<> t[ppm] then permut (t[i],t[ppm]);
end;
begin
remplissage (t,n);
triselection (t,n);
for i:= 1 to n do
write(t[i],' ');
end.
ps: je ne sais pas comment mettre le code dans des balises code :((
program tableau;
uses wincrt;
type tab=array [1..100] of integer;
var i,ppm,n,k:integer;t:tab;
procedure remplissage (var t:tab; var n:integer);
begin
repeat writeln ('donner le nombre de cases');
readln (n);
until n>=0;
for i:= 1 to n do
begin
writeln('donner t[',i,']');
readln (t[i]);
end;
end;
procedure triselection (var t:tab;var n:integer);
procedure permut (var x,y:integer);
var aux:integer;
begin
aux:= x;
x:=y ;
y:= aux ;
end;
function posmin (t:tab;n:integer):integer;
var j,pm:integer;
begin
pm:=i;
for j:= i+1 to n do
begin
if t[j]< t[pm]
then pm:=j;
end;
posmin:= pm;
end;
begin
for k:=1 to n-1 do
ppm:= posmin (t,n);
if t[i]<> t[ppm] then permut (t[i],t[ppm]);
end;
begin
remplissage (t,n);
triselection (t,n);
for i:= 1 to n do
write(t[i],' ');
end.
ps: je ne sais pas comment mettre le code dans des balises code :((
Au dessus de la fenêtre où tu tapes ta réponse, tu as 5 boutons Gras, Italique, Souligné, Code et lien. Tu cliques sur Code et tu colles ton code entre les balises qui sont apparues...
Par contre, pas de renommage en vue.
A vue de nez, ton i dans posmin est indéterminé vu qu'il sert de compteur partout. Je crois que tu devrais chercher de ce côté là.
Par contre, pas de renommage en vue.
A vue de nez, ton i dans posmin est indéterminé vu qu'il sert de compteur partout. Je crois que tu devrais chercher de ce côté là.