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..
- Tri sur excel - Guide
- Programme demarrage windows - Guide
- Logiciel tri photo - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Télécharger le programme de pmu - Télécharger - Médias et Actualité
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à.