Probleme d'execution pascal
Résolu/Fermé
bach01
Messages postés
13
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
9 février 2009
-
10 juil. 2008 à 22:23
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 11 juil. 2008 à 16:30
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 11 juil. 2008 à 16:30
A voir également:
- Probleme d'execution pascal
- Turbo pascal download - Télécharger - Édition & Programmation
- Erreur d'execution 1004 - Forum Programmation
- My pascal - Télécharger - Édition & Programmation
- Un administrateur vous a refusé l'execution de cette application - Forum Windows 10
- VBA erreur 1004 ✓ - Forum VB / VBA
3 réponses
B
Messages postés
9
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2013
3
10 juil. 2008 à 23:37
10 juil. 2008 à 23:37
"stack" est le mot anglais de pile. Donc "stackoverflow error" veut dire que ton programme essaie d'empiler alors que la pile est pleine. Ce qu'il faut faire c'est d'augmenter la taille de la pile. Tu peux le faire de 2 façons:
- en utilisant la directive {M+, si j'ai bonne mémoire car ça fait longtemps que je ne programme plus en Pascal. En tout cas, regard dans l'aide de ton compilateur et chercher une directive de ce genre. Là tu verra comment augment la taille de la pile lors de l'exécution de ton programme.
- tu peux aussi augmenter la taille du segment de pile alloué aux programmes par ton compilateur à partir de l'interface de ce dernier. Regard dans le menu options et cherche stack segment, je pense
J'espère que tu pourra te retrouver même comme je ne suis pas très explicit
- en utilisant la directive {M+, si j'ai bonne mémoire car ça fait longtemps que je ne programme plus en Pascal. En tout cas, regard dans l'aide de ton compilateur et chercher une directive de ce genre. Là tu verra comment augment la taille de la pile lors de l'exécution de ton programme.
- tu peux aussi augmenter la taille du segment de pile alloué aux programmes par ton compilateur à partir de l'interface de ce dernier. Regard dans le menu options et cherche stack segment, je pense
J'espère que tu pourra te retrouver même comme je ne suis pas très explicit
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
11 juil. 2008 à 01:40
11 juil. 2008 à 01:40
J'ai compilé ton code sous Dev-Pascal, et j'obtiens le message d'avertissement concernant la fonction pos_min que j'ai donc corrigé :
Ça règle pas ton problème mais ça t'évitera déjà quelques autres erreurs...
Pour le reste il faudrait revoir tout ton code :
En effet tri_rapide(deb,p); et tri_rapide(p+1,x); tournent alors à l'infini !
function pos_min(j,n:integer):integer;
var i:integer;
begin
pos_min:=j;
for i:=j+1 to n do
if t^[i]<t^[pos_min] then pos_min:=i;
end;De plus ta variable globale j (5è ligne) n'est jamais utilisée
Ça règle pas ton problème mais ça t'évitera déjà quelques autres erreurs...
Pour le reste il faudrait revoir tout ton code :
procedure tri_rapide(deb,x:integer);
var mid,aux,p:integer;
begin
if (deb<x) then
begin
mid:=(deb+x) div 2;
aux:=t^[mid];
t^[mid]:=t^[deb];
t^[deb]:=aux;
p:=deb;
end;
for i:=(deb+1) to x do
begin
if (t^[i]<t^[deb]) then
begin
p:=p+1;
aux:=t^[i];
t^[p]:=aux;
end;
end;
aux:=t^[p];
t^[p]:=t^[deb];
t^[deb]:=aux;
tri_rapide(deb,p);
tri_rapide(p+1,x);
end;Au cas où deb>x, p n'est pas initialisé, ce qui fait planter le programme
En effet tri_rapide(deb,p); et tri_rapide(p+1,x); tournent alors à l'infini !
bach01
Messages postés
13
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
9 février 2009
2
11 juil. 2008 à 16:28
11 juil. 2008 à 16:28
j'ai placé un end la ou il ne fallait pas aussi et maintenant ke je lai remis au bon endroit sa marche.merci pr l'aide KX!
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
11 juil. 2008 à 16:30
11 juil. 2008 à 16:30
De rien... c'était pas trop dur cette fois !